Ove*_*ive 2 f# casting type-safety
这是一件非常微不足道的事情,但我真的很难让它发挥作用。我想转换sqrt nwhere nis 类型的结果,int64最后将它传递给一个接受 an 的函数,int但我真的很难找到一个像样的解决方案,这是我想出的方法,但这是可怕的,我可以'不相信在例如 C# 中如此微不足道的事情在 F# 中应该如此困难。
n
|> float
|> sqrt
|> int
|> function
Run Code Online (Sandbox Code Playgroud)
这是 F# - 如果您没有想要的东西,请编写一个函数。例如:
let inline sqrttoint n =
(int (sqrt (float n)))
n |> sqrttoint |> function
Run Code Online (Sandbox Code Playgroud)
最重要的是,它适用于任何可以转换为float.
C# 与 F# 的主要问题是您习惯了 C#,其中数字类型是自动提升的,而 F# 希望您关心大多数事物的类型,并且类型的更改需要更加明确。