F# 类型推断:函数与类型
我正在学习F#,我不明白类型推理和泛型在这种语言中是如何工作的。例如,我可以声明一个通用的min函数,并将其与不同类型的参数一起使用:F# 类型推断:函数与类型,f#,F#,我正在学习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 因此,我有几个问题: 为什么我可以对不同的类型重复使用泛型函数定义,而不是类型定义 该函数在运行时是否像C#泛型那样专门针对每种类型?还是在编译时像C++模板?或
let min a b = if a < b then a else b
let smallestInt = min 3 5
let smallestFloat = min 3.0 5.0
因此,我有几个问题:
- 为什么我可以对不同的类型重复使用泛型函数定义,而不是类型定义
- 该函数在运行时是否像C#泛型那样专门针对每种类型?还是在编译时像C++模板?或者说,拳击是为了将每个论点都视为可比的吗
谢谢。类需要显式类型参数。这项工作:
type Point2D<'T>(x:'T, y:'T) =
member this.X = x
member this.Y = y
let float32Point = Point2D(0.0f, 1.0f)
let intPoint = Point2D(0, 1)
键入Point2D'a->'a(需要比较)
。比较
约束仅在编译时存在(运行时签名相同,减去约束)
这就是所谓的。@svick自动泛化意味着推断一般类型,但这里要做的不止这些。
type Point2D<'T>(x:'T, y:'T) =
member this.X = x
member this.Y = y
let float32Point = Point2D(0.0f, 1.0f)
let intPoint = Point2D(0, 1)