erlang:元组(或列表)中的占位符
我想整理一下我的Erlang代码,我发现下面有很多问题: A={Tid,{u Tv0,{u Tv1,Tv2,Tv3} 有没有什么方法可以像这样清理代码:A={Tid,SomewayReplace(4)} 更新1: 像@Pascal示例一样,有没有办法简化代码A={T,,,,,,,}像A={T,以某种方式替换(4)}来替换4符号 更新2erlang:元组(或列表)中的占位符,erlang,Erlang,我想整理一下我的Erlang代码,我发现下面有很多问题: A={Tid,{u Tv0,{u Tv1,Tv2,Tv3} 有没有什么方法可以像这样清理代码:A={Tid,SomewayReplace(4)} 更新1: 像@Pascal示例一样,有没有办法简化代码A={T,,,,,,,}像A={T,以某种方式替换(4)}来替换4符号 更新2 在实际项目中,如果某个记录包含许多元素,我发现它会迫使我重复写入符号,因此我想知道是否有任何方法可以简化它???写入A=Something意味着您尝试将A与某个元
在实际项目中,如果某个记录包含许多元素,我发现它会迫使我重复写入符号,因此我想知道是否有任何方法可以简化它???写入A=Something意味着您尝试将A与某个元素匹配,或者如果A未绑定,则将某个元素分配给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不能是变量).为什么不使用记录呢?那么你只需要匹配你想要提取的字段。作为一种副作用,你让代码更容易调试,因为你必须先用一个原子来命名元组。你的意思是什么?请说清楚。是的,我知道u和u之间的区别,我已经更新了问题,你想出了什么办法吗???是的,谢谢,我只是不知道能不能这样做。谢谢。