gpt4 book ai didi

f# - F#有三元吗? : operator?

转载 作者:行者123 更新时间:2023-12-03 08:46:21 24 4
gpt4 key购买 nike

我正在学习来自 C# 的 F#,我刚刚尝试编译一个表达式

let y = Seq.groupBy (fun x -> (x < p ? -1 : x == p ? 0: 1))

但请参阅“表达式中的意外整数文字”。 F# 有三元运算符吗?如果没有,我应该用什么代替?

最佳答案

是的,它叫 if .. then .. else
事实上,在 F# 中,一切都是表达式,甚至是 if .. then .. else 堵塞。

在 C# 中 var x = true ? 0 : 1;
在 F# let x = if true then 0 else 1
所以在你的情况下:

let y = Seq.groupBy (fun x -> if x < p then -1 else if x = p then 0 else 1)

你可以用 elif 把它缩短一点
let y = Seq.groupBy (fun x -> if x < p then -1 elif x = p then 0 else 1)

当您有 2 种以上的情况时,在 F# 中要特别考虑的另一个选项是模式匹配:
let f p x =
match x with
| x when x < p -> -1
| x when x = p -> 0
| _ -> 1

let y = Seq.groupBy (f p)

但是在您的特定情况下,我会使用 if .. then .. elif .. then。

最后请注意,测试相等运算符是 =不是 ==就像在 C# 中一样。

关于f# - F#有三元吗? : operator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28551938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com