2.3}"); // compare an int with a double 但是F#不允许我们这样-6ren">
gpt4 book ai didi

c# - F# 中的某些二元运算符(如 (+) 、 (>) 、 (<) )只接受必须是相同类型的参数是否有特殊原因?

转载 作者:行者123 更新时间:2023-12-03 20:35:47 24 4
gpt4 key购买 nike

C# 等语言允许我们编写如下代码:

// C#
Console.WriteLine($"{3 > 2.3}"); // compare an int with a double

但是F#不允许我们这样做。例如,

// F#
printfn "%A" (3 > 4) // fine
printfn "%A" (3.0 > 4.0) // fine
printfn "%A" (3 > 4.0) // wrong

F# 中的某些二元运算符有什么特殊原因吗?喜欢 (+) , (>) , (<)只接受必须是相同类型的参数?

最佳答案

F# 不进行隐式类型转换。隐式转换会产生问题,这也是为什么这么多人对 javascript 情绪复杂的部分原因。例如,请欣赏这首经典的 javascript 诗。隐式转换是使这首诗成为可能的基础。

> Array(16).join('wat' - 1) + ' Batman'
'NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batman'

什么是3>“4”,那么“4”>3呢?你可能有对你有意义的答案,但是有很多有效的方法来解释隐式转换应该是什么。对于 3 > 4.0,此处的歧义可能不那么明显,但是当您有显式转换的驱动理念时,最好将其普遍应用。

关于c# - F# 中的某些二元运算符(如 (+) 、 (>) 、 (<) )只接受必须是相同类型的参数是否有特殊原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56980816/

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