Ocaml 应为不同类型的表达式
我有以下代码:Ocaml 应为不同类型的表达式,ocaml,Ocaml,我有以下代码: type point = { x : float; y : float; z : float } type dpoint = { dx : float; dy : float; dz : float } type physical_object = { position : point; velocity : dpoint } let move p dp = {x = p.x + dp.x; y = p.y + dp.y; z = p.z + d
type point = { x : float; y : float; z : float }
type dpoint = { dx : float; dy : float; dz : float }
type physical_object = { position : point; velocity : dpoint }
let move p dp = {x = p.x + dp.x; y = p.y + dp.y; z = p.z + dp.z}
我得到这个错误:
File "code.ml", line 4, characters 21-24:
Error: This expression has type float but an expression was expected of type
int
p.x
突出显示
为什么会这样?
我是否没有正确引用记录的字段?在OCaml中,
+
仅对整数起作用。对于浮动,您必须使用+。
运算符(带有点后缀)。有关更多详细信息,请参见OCaml中的,例如,+
仅适用于整数。对于浮动,您必须使用+。
运算符(带有点后缀)。有关更多详细信息,请参见,例如,运算符+
具有类型int->int->int
,因此仅适用于类型int
的值。对浮动使用+。
运算符,(对其他操作相应地使用*。
,/。
)
OCaml没有操作符重载(aka),因为它不能很好地处理类型推断。但是,它使您的代码更加明确,这可以被视为一个优点。运算符
+
具有类型int->int->int
,因此仅适用于类型int
的值。对浮动使用+。
运算符,(对其他操作相应地使用*。
,/。
)
OCaml没有操作符重载(aka),因为它不能很好地处理类型推断。然而,它使您的代码更加明确,这是一个好处