35

Elixir プログラミング言語には、2 つの類似した構成体condとがありcaseます。どちらも他の言語のswitchorselectステートメントに似ています

condとの両方について、このページcaseで説明します

4

2 に答える 2

64

ifもクラブに入らせてください。if1つの条件と可能なで使用しelseます。それだけです。cond複数の条件があり、ifステートメントが十分でない場合にステートメントを使用します。最終的に、ステートメントcaseは、いくつかのデータをパターン一致させたい場合に使用されます。

例を挙げて説明しましょう: 今日雨が降っていればリンゴを、雨が降っていなければご飯を食べたいとします。

if weather == :raining do
  IO.puts "I'm eating apple"
else
  IO.puts "I'm eating rice"
end

これは限られた世界なので、選択肢を広げたいと考えています。そのため、いくつかの条件でさまざまなものを食べることになるため、condステートメントは次のようになります。

cond do
  weather == :raining and not is_weekend ->
    IO.puts "I'm eating apple"
  weather == :raining and is_weekend ->
    IO.puts "I'm will eat 2 apples!"
  weather == :sunny ->
    IO.puts "I'm happy!"
  weather != :raining and is_sunday ->
    IO.puts "I'm eating rice"
  true ->
    IO.puts "I don't know what I'll eat"
end

最後のtrueものはそこにある必要があります。そうしないと、例外が発生します。

では、どうcaseですか?何かをパターンマッチするために使用されます。天気と曜日に関する情報をタプルのメッセージとして受け取り、それに基づいて決定を下すとします。意図は次のように記述できます。

case { weather, weekday } do
  { :raining, :weekend } ->
    IO.puts "I'm will eat 2 apples!"

  { :raining, _ } ->
    IO.puts "I'm eating apple"

  { :sunny, _ } ->
    IO.puts "I'm happy!"

  { _, :sunday } ->
    IO.puts "I'm eating rice"

  { _, _ } ->
    IO.puts "I don't know what I'll eat"
end

したがって、は、またはcaseにはないデータへのパターン マッチング アプローチをもたらします。ifcond

于 2014-01-12T20:25:19.030 に答える