gpt4 book ai didi

casting - 为什么不能在 F# 中添加 int 和 float 文字?

转载 作者:行者123 更新时间:2023-12-02 06:50:28 25 4
gpt4 key购买 nike

在 F# 中,如果您编写 3 + 2.5,则会出现语法错误。你必须写例如3。 + 2.5 使其工作,这在具有许多数字文字的数学密集型领域中会变得烦人。

看到许多其他语言(例如 C#)处理得很好,是否有特殊原因导致 F# 在执行算术运算时不将 int 文字隐式转换为 float(据我所知这是一种无损转换)?

最佳答案

的确,intfloat 是“安全的”。但是,正如其他人所提到的,许多人认为通常类型之间缺乏隐式转换是 F# 的一个很好的特性。

F# 的类型推断比 C# 广泛得多。通过使用推断的类型可以通过大型代码库一路传递。数字类型之间的隐式转换可能会使推理变得复杂,从而使理解类型错误变得更加困难,并增加编译器代码本身的维护负担。事实上,F# 不执行任何 implicit conversions defined in C# .

By eliminating unnecessary casts, implicit conversions can improve source code readability. However, because implicit conversions do not require programmers to explicitly cast from one type to the other, care must be taken to prevent unexpected results.

同样,这降低了便利性,但减少了错误行为的可能性,这可能会在以后或对其他人造成更大的不便。

基本上,这种方法以一些便利换取了另一种便利(不必在所有地方都写类型名称)和一些增加的安全性/明确性。我个人认为这是 F# 的一个很好的权衡。

关于casting - 为什么不能在 F# 中添加 int 和 float 文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710437/

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