我什至觉得问这个问题很愚蠢,因为这看起来很微不足道,但我的大脑却让我失望了。如果我有以下内容:
let a, b, c = 1, 1, 1
有没有一种优雅的方法来确定 a、b 和 c 是否都具有相同的值。就像是:
let result = (a = b = c)
这会失败,因为表达式a = b
返回 true 并且下一个表达式的结果是true = c
并抱怨它期待的是 int,而不是 bool。我唯一能想到的是:
a = b && a = c && b = c
当我想添加更多变量时,这将不起作用。
我真正想做的是:
let same (x: string * string * string) =
match x with
| (a, a, a) -> true
| _ -> false
我希望我可以将所有元素匹配到一个元素中,如果它们不同,它会继续前进,但它在匹配中的第二个元素上表示它已经被绑定。
检查列表中的每个值是否相同:
let rec same = function
| x::y::_ when x <> y -> false
| _::xs -> same xs
| [] -> true
Usage
let a, b, c = 1, 1, 1
same [a; b; c] //true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)