2016-08-09 23 views
2

我正在探索Elixir,並且遇到了有關下劃線的奇怪事情。我們用它來搭配任何變量並丟棄,因爲藥劑認爲永久綁定:Elixir中下劃線'_`的行爲

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

但是當我分配的東西強調,價值得到呼應它在正常的變量綁定的情況下,以同樣的方式:

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

什麼是殼在第二種情況下呼應10是什麼意思?

回答

2

=運算符在完成模式匹配後返回RHS的值。在這種情況下,10被忽略,因爲它被分配到_,但整個表達式的返回值仍然爲10

+0

謝謝!這個答案更相關,因爲它指定返回的值是右邊的。 – dotslash

1

10是表達式_ = 10的結果。

Elixir中的所有內容都是表達式,所以一切都會返回一個值。

0

通常在Elixir中,當你在模式匹配中使用_時,你並不在意這個值。

這裏返回表達式的值,即10

1

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}}