相关疑难解决方法(0)

类型推断:函数与类型

我正在学习F#,我不明白类型推断和泛型如何在这种语言中工作.例如,我可以声明一个通用的min函数,并将它与不同类型的参数一起使用:

let min a b = if a < b then a else b

let smallestInt = min 3 5
let smallestFloat = min 3.0 5.0
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用类型相同的东西,它不起作用:

type Point2D(x, y) = 
    member this.X = x
    member this.Y = y

let float32Point = new Point2D(0.0f, 1.0f)
let intPoint = new Point2D(0, 1) // This expression was expected to have type 
                                 // float32 but here has type int
Run Code Online (Sandbox Code Playgroud)

所以,我有几个问题:

  • 为什么我可以为不同类型而不是类型定义重用通用函数定义?
  • 该功能是否适用于运行时的每种类型,如C#泛型?或者在编译时像C++模板一样?或者是拳击执行将每个参数视为IComparable?

谢谢.

f#

3
推荐指数
1
解决办法
206
查看次数

标签 统计

f# ×1