Sie haben gerade daran gearbeitet, Elixir zu lernen, und ich bin ein wenig neugierig auf die verschiedenen Möglichkeiten, eine I/I-Linie zu erstellen.Warum verwenden Sie/else Schlüsselwörter zu wenn in Elixir?
Ich begann mit ...
if left_side_wins?(p, c) do
{"Humanity", p, c}
else
{"The Machine", c, p}
end
|> print_winner
... die Rohre das Tupel richtig entweder für Gewinner. Aber diese nicht ...
if left_side_wins?(p, c), do: {"Humanity", p, c}, else: {"The Machine", c, p}
|> print_winner
... und ich weiß, es ist, weil die |>
Teil der else
betrachtet wird, und ich kann es mit Klammern befestigen ...
if(left_side_wins?(p, c), do: {"Humanity", p, c}, else: {"The Machine", c, p})
|> print_winner
... und das funktioniert jetzt. Für jeden Gewinner wird das Tupel korrekt an print_winner
geleitet.
Aber ich konnte auch ein Inline verwenden tun/else/Endblock und tun ...
if left_side_wins?(p, c) do {"Humanity", p, c} else {"The Machine", c, p} end
|> print_winner
... die auch funktioniert.
Jede Ressource, die ich gelesen habe, beschreibt mit dem do:.., else:..
Format, aber die do ... else ... end
scheint sowohl sauberer und weniger fehleranfällig.
Was sind die Hauptunterschiede zwischen ihnen, jenseits dessen, was ich sehe?
Die do: ..., else: ...
scheint bevorzugt zu sein, aber ist es nicht empfindlicher für die Vorrangstellung des Operators?
Große Diskussion, danke! Sind irgendwelche der Entscheidungen mehr verpönt als andere, oder werden sie im Allgemeinen alle als "Elixier" akzeptiert und in verschiedenen Situationen verwendet? Unabhängig davon, die "... immer Kette von Rohren mit Rohwert beginnen .." und "... wenn Ausdruck in seine eigene Funktion" sind ** große ** Ratschläge. – kevlarr
Sie sind beide Elixirisch. Ich sehe Leute argumentieren, dass, wenn es nur einen Ausdruck in do und sonst gibt, als es '' tun sollte: else: 'und zu verlassen" do else end "für Fälle, in denen es mehrere Ausdrücke gibt. Aber selbst bei einzelnen Ausdrücken überprüfe ich einfach, was schöner aussieht. Wenn alles in einer Zeile weniger als 80 Zeichen hat, verwende ich ', do: else:' sonst 'do else end '. Check out Credo linter https://github.com/rrrene/credo Es überprüft deinen Code für solche Dinge :) Es ist cooles Lernwerkzeug! – tkowal