我想整理我的Eralng代码,我发现有很多问题如下:
A = {Tid,_Tv0,_Tv1,Tv2,Tv3}
有没有办法清理代码:A = {Tid,SomewayReplace(4)} ???
UPDATE1:
像@Pascal一样的例子,有没有办法简单的代码A = {T,_,_,_,_,_}喜欢A = {T,SomewayReplace(4)}来取代那4个符号_ ???UPDATE2
在实际项目中,如果某些记录包含很多元素,我发现它迫使我重复写符号_,所以我想知道是否有任何方法可以简单呢???
答案 0 :(得分:0)
写A = Something意味着你试图将A与Something匹配或如果A未绑定,则将Something指定给A.无论如何,必须定义Something。
你可以在写作中找到一些捷径。例如,如果要将函数的结果赋给A,请验证结果是5个元素的元组并将第一个元素赋值给T,您可以写:
A = {T,_,_,_,_} = f(Param).
_T的含义与任何变量完全相同。它只是说编译器在代码中没有使用此变量时不发出警告。当您想要忽略变量的值但仍然保持其含义的痕迹时,它在模式匹配中经常出现。
<强> [编辑] 强>
无法编写{T, SomewayReplace(4)}
,但您可以使用记录。记录是标记的元组(第一个元素是标识此记录的原子。它不短于小元组的占位符,但它更清晰,您不需要记住元组中信息的位置,当你需要在元组中添加一个新元素时,更容易修改你的代码。语法将是
-record(mytuple,{field1,...,fieldx,...}.
...
A = #mytuple{fieldx = T} = f(Param).
waerning:记录由编译器管理,因此在构建时必须知道所有内容(#mytuple {Fieldx = T}是非法的,Fieldx不能是变量)。
答案 1 :(得分:0)
为什么不使用唱片?然后,您只匹配要提取的字段。作为一种副作用,您可以使代码更容易调试,因为您必须首先使用原子来命名元组。