假设我们的变量五是五个元素的元组。我们如何编写一个计算(并打印)第一个元素的表达式,但前提是所有五个元素都相同?
例如,给定以下元组:
Five = {4, 4, 4, 4, 4}.
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用element(_,_). 声明为:
element(1, Five) =:= element(2, Five).
Run Code Online (Sandbox Code Playgroud)
但这只是给我第一个元素VS第二个元素的评价,而不是全部。知道如何同时评估第一个元素和所有其他元素吗?{ ................. } = 五,........................
如果您知道元组的大小(例如示例中的 5),您可以使用相同的变量进行模式匹配:
case Five of
{X, X, X, X, X} -> io:format("~w", [X]), X;
_Otherwise -> ok
end
Run Code Online (Sandbox Code Playgroud)
当然,在函数子句中也可以做同样的事情。
如果元组的大小未知,一种方法是将其转换为列表tuple_to_list/1,例如使用lists:all/2:
[H | T] = tuple_to_list(Five),
IsSame = lists:all(fun (E) -> E =:= H end, T),
case IsSame of
true -> io:format("~w", [H]), H;
false -> ok
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |