2014-12-26 113 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你不得不通过先给一个原子命名元组。