2014-01-12 7 views

Antwort

35

mich zu if in den Club setzen lassen. Sie verwenden if mit einer Bedingung und einer möglichen else, das ist es. Sie verwenden die cond-Anweisung, wenn Sie mehr als eine Bedingung haben und eine if-Anweisung nicht genug ist. Am Ende wird die case-Anweisung verwendet, wenn Sie einige Daten mit einem Muster vergleichen möchten.

Lassen Sie uns durch Beispiele erläutern: Angenommen, Sie Apfel essen wollen, wenn heute regnet oder Reis ist, wenn nicht, dann könnten Sie verwenden:

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

Dies ist eine begrenzte Welt, so dass Sie Ihre Möglichkeiten erweitern möchten und aus diesem Grund werden Sie verschiedene Dinge auf einige Bedingungen essen, so die cond Erklärung dafür ist, wie folgt aus:

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 

die letzte true sollte es anders sein, es wird eine Ausnahme ausgelöst.

Nun, was ist mit case? Es wird verwendet, um Muster mit etwas zu vergleichen. Nehmen wir an, Sie die Informationen über das Wetter und den Tag der Woche als eine Nachricht in einem Tupel empfangen und Sie hängt davon ab, dass eine Entscheidung zu treffen, können Sie Ihre Absichten schreiben könnte wie:

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 

So ist die case Sie bringt Der Muster-Matching-Ansatz zu den Daten, die Sie nicht mit if oder cond haben.

14

Meine einfache Antwort lautet:

  • cond erhält keine Argumente, und es erlaubt Ihnen, einen anderen Zustand in jedem Zweig zu verwenden.
  • case empfängt ein Argument, und jeder Zweig ist pattern-matched gegen das Argument.
Verwandte Themen