我正在探索Elixir,並且遇到了有關下劃線的奇怪事情。我們用它來搭配任何變量並丟棄,因爲藥劑認爲永久綁定:Elixir中下劃線'_`的行爲
iex(38)> _
** (CompileError) iex:38: unbound variable _
但是當我分配的東西強調,價值得到呼應它在正常的變量綁定的情況下,以同樣的方式:
iex(38)> x = 10
10
iex(39)> _ = 10
10
什麼是殼在第二種情況下呼應10
是什麼意思?
我正在探索Elixir,並且遇到了有關下劃線的奇怪事情。我們用它來搭配任何變量並丟棄,因爲藥劑認爲永久綁定:Elixir中下劃線'_`的行爲
iex(38)> _
** (CompileError) iex:38: unbound variable _
但是當我分配的東西強調,價值得到呼應它在正常的變量綁定的情況下,以同樣的方式:
iex(38)> x = 10
10
iex(39)> _ = 10
10
什麼是殼在第二種情況下呼應10
是什麼意思?
=
運算符在完成模式匹配後返回RHS的值。在這種情況下,10
被忽略,因爲它被分配到_
,但整個表達式的返回值仍然爲10
。
10
是表達式_ = 10
的結果。
Elixir中的所有內容都是表達式,所以一切都會返回一個值。
通常在Elixir中,當你在模式匹配中使用_時,你並不在意這個值。
這裏返回表達式的值,即10
。
Elixir中的每個表達式都會返回一個值。模式匹配時,它會返回右側的值。
_ = 10 # return 10 as RHS value
考慮到這一點,您可以將匹配鏈接在一起。
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}}
謝謝!這個答案更相關,因爲它指定返回的值是右邊的。 – dotslash