2014-01-12 4 views

答えて

35

に説明されている他のlangages

両方condcaseからswitchselect文に似ています。あなたはifを1つの条件と可能であればelseと使用します。それだけです。複数の条件があり、ifステートメントでは不十分な場合は、最後にcaseステートメントが使用され、一部のデータにパターンを一致させる場合は、condステートメントを使用します。あなたは、あなたが使用することができ、今日はそうでない場合は雨が降ったり、米の場合はりんごを食べたいとします:

のは、例によって説明させて

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はあなたにもたらしますifまたはcondでないパターンマッチングのデータへのアプローチ。

14

私の簡単な答えは:

  • condは引数を受け取らず、そしてそれはあなたが各ブランチで異なる条件を使用することができます。
  • caseは引数を受け取り、すべてのブランチはと一致し、引数に対してはと一致します。
関連する問題