2016-08-09 17 views
2

Ich erkunde Elixir und stieß auf etwas seltsames über den Unterstrich. Wir verwenden es jede Variable anzupassen und zu verwerfen, weil Elixir dauerhaft ungebundenes hält:Verhalten des Unterstrichs `_` in Elixir

iex(38)> _ 
** (CompileError) iex:38: unbound variable _ 

Aber wenn ich etwas zuweisen zu unterstreichen, wird der Wert auf die gleiche Weise hallt es tut im Fall der normalen Variablenbindung:

iex(38)> x = 10 
10 
iex(39)> _ = 10 
10 

Was die Schale durch Echo 10 im zweiten Fall bedeutet?

Antwort

2

Der Operator = gibt den Wert des RHS nach der Mustererkennung zurück. In diesem Fall wird 10 ignoriert, da es _ zugewiesen ist, aber der Rückgabewert des gesamten Ausdrucks ist immer noch 10.

+0

Danke! Diese Antwort ist relevanter, da sie angibt, dass der zurückgegebene Wert der rechten Seite entspricht. – dotslash

1

10 ist das Ergebnis des Ausdrucks _ = 10.

Alles in Elixir ist ein Ausdruck, also gibt alles einen Wert zurück.

0

Im Allgemeinen in Elixir, wenn Sie _ im Mustervergleich verwenden, ist Ihnen dieser Wert egal.

Hier wird der Wert des Ausdrucks zurückgegeben, der 10 ist.

1

Jeder Ausdruck in Elixir gibt einen Wert zurück. Beim Mustervergleich wird der Wert auf der rechten Seite zurückgegeben.

_ = 10 # return 10 as RHS value 

Vor diesem Hintergrund können Sie das Spiel miteinander verketten.

iex(1)> {date, time} = local_time = :calendar.local_time 
{{2016, 8, 9}, {7, 43, 11}} 

iex(2)> date 
{2016, 8, 9} 

iex(3)> time 
{7, 43, 11} 

iex(4)> local_time 
{{2016, 8, 9}, {7, 43, 11}} 
Verwandte Themen