2014-12-26 74 views
-1

我想整理我的Eralng代碼,我發現那裏有很多問題,以下內容:二郎:佔位符元組(或列表)

A = {TID,_Tv0,_Tv1,TV2,TV3}

有什麼辦法可以清理代碼:A = {Tid,SomewayReplace(4)}?

UPDATE1:

像@Pascal例如,是否有任何的方式來簡單的代碼A = {T,_,_,_,_,_}喜歡被A = {T,SomewayReplace( 4)}替換那4個符號_ ???

UPDATE2

在實際項目

,如果一些記錄包括很多元素,我發現它迫使我寫重複的符號_,所以我不知道是否有任何方式簡單,它???

+1

你的意思是?請說清楚。 – BlackMamba

回答

0

寫入A =某事意味着您嘗試將A與某事匹配,或者如果A未被綁定,則將某事分配給A.在任何情況下,必須定義某事。

你可以在寫作中找到一些快捷方式。例如,如果你想分配funtion到A的結果,驗證結果是5個元素的元組,並分配到T中的第一元件,所述可寫:

A = {T,_,_,_,_} = f(Param). 

_T的含義與任何變量完全相同。它只是對th編譯器說,如果在代碼中未使用此變量,則不會發出警告。當你想忽略一個變量的值,但仍然保留它的含義時,它在模式匹配中很常見。

[編輯]

這是不可能寫{T, SomewayReplace(4)},但你可以使用記錄。記錄是一個標記元組(第一個元素是標識這個記錄的原子,它不比小元組的佔位符短,但它更清晰,不需要記住元組中信息的位置,它是容易當你需要在一個元組添加新元素來修改代碼的語法將

-record(mytuple,{field1,...,fieldx,...}. ... A = #mytuple{fieldx = T} = f(Param).

waerning:記錄由編譯器管理的,所以一切都必須在製作的時候是已知的(# mytuple {Fieldx = T}是非法的,Fieldx不能是一個變量)

+0

是的,我知道_和_T之間的差異,我更新了這個問題,你有沒有想出什麼? – haoxian

+0

我只看到記錄。 – Pascal

+0

是的,謝謝,我只是想知道是否可以做到。謝謝。 – haoxian

0

爲什麼不使用記錄?然後你只匹配你想要提取的字段作爲副作用,你使代碼更容易調試,sinc e你不得不通過先給一個原子命名元組。