Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
erlang:元组(或列表)中的占位符_Erlang - Fatal编程技术网

erlang:元组(或列表)中的占位符

erlang:元组(或列表)中的占位符,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与某个元

我想整理一下我的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未绑定,则将某个元素分配给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之间的区别,我已经更新了问题,你想出了什么办法吗???是的,谢谢,我只是不知道能不能这样做。谢谢。