casting - F# 转换一个 int

标签 casting f# type-safety

这是一件非常微不足道的事情,但我真的很难让它发挥作用。我想转换 sqrt n 的结果,其中 nint64 类型,最后将其传递给采用 int 的函数 但我真的很难找到一个像样的解决方案,这是我想出的方法,但这太可怕了,我不敢相信在 C# 中做一些如此微不足道的事情应该如此在 F# 中很难。

n 
|> float 
|> sqrt 
|> int 
|> function

最佳答案

这是 F# - 如果您没有想要的,请编写一个函数。例如:

let inline sqrttoint n =
    (int (sqrt (float n)))

n |> sqrttoint |> function

最重要的是,它适用于任何可以转换为 float 的东西。

C# 与 F# 的主要问题是,您习惯于 C#,其中数字类型是自动提升的,而 F# 希望您关心大多数所有内容的类型,并且类型的更改需要更加明确。

关于casting - F# 转换一个 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26722193/

相关文章:

c++ - 向上转换不透明指针

c++ - 将包含 void 指针的一对转换为一对其他类型的指针

java - 如何在 Java 中使用 TypeToken 进行强制转换?

c++ - 在 C++ 中将 unsigned int 重新解释为 float

c++ - 为什么 "std::begin()"在这种情况下总是返回 "const_iterator"?

f# - 使用 F# Struct 和 Explicit LayoutKind 创建标记联合

c# - 为什么 F# 代码产生的结果与 C# 不同

asynchronous - F# 异步处理

java - Java 中的泛型和排序

scala - `Seq.contains` 在类型不匹配时失败的替代方法是什么?