有没有办法在线进行多值比较?

Jos*_*den 2 comparison f#

我甚至对这个问题感到愚蠢,因为它看起来很琐碎,但我的大脑让我失望了.如果我有以下内容:

let a, b, c = 1, 1, 1
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以确定a,b和c是否都保持相同的值.就像是:

let result = (a = b = c)
Run Code Online (Sandbox Code Playgroud)

这失败是因为表达式a = b返回true并且下一个表达式导致true = c并且抱怨它期望int,而不是bool.我唯一能想到的是:

a = b && a = c && b = c
Run Code Online (Sandbox Code Playgroud)

当我想添加更多变量时,它将无法工作.

我真正要做的就是:

let same (x: string * string * string) =
    match x with
    | (a, a, a) -> true
    | _ -> false
Run Code Online (Sandbox Code Playgroud)

我希望我可以将所有元素匹配到一个元素中,如果它们不同,它会继续前进,但它在匹配中的第二个元素上说它已经被绑定了.

Dan*_*iel 8

要检查列表中的每个值是否相同:

let rec same = function
  | x::y::_ when x <> y -> false
  | _::xs -> same xs
  | [] -> true
Run Code Online (Sandbox Code Playgroud)

用法

let a, b, c = 1, 1, 1
same [a; b; c] //true
Run Code Online (Sandbox Code Playgroud)