erlang中下劃線的使用

在erlang裏'_',它可以代替任何東西,在match的時候非常有用,例如

{A, _, [B|_], {B}} = {abc, 23, [22, 23], {22}}  

這樣,就是把_當作一個佔位符,表示,match的時候這裏有一個值,但是我不關心他是什麼

在erlang裏,使用下劃線'_'開頭是有特殊含義的,告訴編譯器,這些變量是被忽略的,聲明瞭沒有使用/綁定也沒關係(否則,默認情況下編譯會報警的)

在使用下劃線開頭的量來標記可以忽略的量是一個不錯的主義,比如:

{Name,_Age}={"Argan",30}  

 這裏的_Age其實是我不關心的,因此使用一個_開頭的變量來做match,在閱讀代碼的時候,雖然其他的代碼裏不會用到_Age,但是一下就能看出來,這個數據結構,除了Name以外,還有一個值是Age,非常明確的表達

不過,因爲單一個'_'可以match任意的值,而且match出來的值是無法使用的,因此在表達式裏多次使用是沒關係的,例如第一個例子,但是,如果第一個例子修改成:

{A, _int, [B|_int], {B}} = {abc, 23, [22, 23], {22}}  

就會出錯了,本意是想表達的更清楚,_int的地方是一個int值,但是這裏有一個陷阱,[Head|Tail]這樣的match,出來的結果的Tail是一個list,因此,上述表達式裏第一個_int的地方是一個int 23,第二個_int的地方實際上是一個list [23],因此上述表達式match會失敗。

 

轉至:https://www.cnblogs.com/fvsfvs123/p/4208073.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章