2015-09-08 24 views

回答

18

! - 公約其提高對故障的異常功能。

? - 公約其返回一個布爾值

_功能 - 用於忽略模式匹配表達式的參數或部分。

. - 正如您所說的用於調用匿名函數,但也用於訪問模塊函數,如Mod.a(arg)

+2

*以'_'開頭的變量(例如'_foobar')和*僅由'_'組成的變量(例如'def foo(_,_bar) )do,_bar end')。嘗試在編譯時'未綁定變量'錯誤中使用'_'結果。帶有下劃線「_bar」前綴的變量用於防止未使用變量的警告,並且不會阻止編譯。它們的使用只會產生警告:「警告:設置後使用下劃線變量」_bar「。前導下劃線表示變量的值應該被忽略......「 – Marc

11

首先

它們是命名約定通常應用於函數名的末尾,並且是而不是的任何特殊語法。

- 如果函數遇到錯誤,將引發異常。

一個很好的例子是Enum.fetch!(它也有相同的Enum.fetch,它不會引發異常)。找到給定索引處的元素(從零開始)。 如果給定位置超出集合的範圍,則引發OutOfBoundsError。

- 用於顯示該函數將返回布爾值,無論是true還是false。一個很好的例子是Enum.any?如果功能爲任何值true表示返回true,否則返回false

_ - 這將在功能或模式匹配忽略的參數。如果你喜歡,你可以在下劃線後給出一個名字.Ex - _base

這是通常用在尾遞歸函數的末尾。電源功能就是一個很好的例子。如果你想提出任何基數爲0的結果是1,那麼它真的並不重要基地

defp getPower(_base,0), do: 1 

. - 用於訪問模塊內部的任何功能或如你所說調用一個匿名函數

iex(1)> square = fn(number) -> number * number end 
iex(2)> square.(4) 
+2

只需注意:'getPower'函數可以使用模式匹配:'defp getPower(_base,0),do:1' – asymmetric

相關問題