如何在Erlang中仅当元组所有元素相同时评估其首个元素?
解决方法
针对固定5元素的元组,有两种简单的实现方式:
方法一:模式匹配(推荐)
利用Erlang的模式匹配特性,直接匹配所有元素相同的元组结构,这是最直观且高效的方式:
case Five of {X, X, X, X, X} -> io:format("~p~n", [X]); % 满足条件时输出首个元素 _ -> ok % 不满足条件时什么都不做,也可以换成你需要的处理逻辑 end.
当元组Five的5个元素完全相同时,会匹配到第一个分支,X就是首个元素,直接输出即可;否则进入第二个分支不处理。
方法二:列表遍历检查
如果需要更灵活的写法(比如以后元组长度可能变化),可以把元组转成列表,再检查所有元素是否和首个元素相等:
First = element(1, Five), % 检查所有元素等于首个元素,满足则输出 lists:all(fun(Elem) -> Elem =:= First end, tuple_to_list(Five)) andalso io:format("~p~n", [First]).
这里lists:all/2会遍历列表里的每个元素,只有所有元素都满足Elem =:= First时返回true,andalso是短路逻辑,只有前面条件为真才会执行后面的输出操作。
内容的提问来源于stack exchange,提问作者iMikou96
相关产品推荐
相关产品推荐

