如何访问 OCaml 中的对象字段?
How to access an object field in OCaml?
我在 OCaml 中创建了一个 point
class,由一对 int
和一个 set
方法组成:
# class point (x : int) (y : int) =
object
val mutable x = x
val mutable y = y
method set x' y' = x <- x'; y <- y'
end;;
class point :
int ->
int ->
object
val mutable x : int
val mutable y : int
method set : int -> int -> unit
end
然后我实例化了一个点:
# let p = new point 1 2;;
val p : point = <obj>
但是我无法访问它的字段:
# p#x;;
Error: This expression has type point
It has no method x
# p.x;;
Error: Unbound record field x
如何访问对象的字段?
请注意 OCaml manual 确实提到了私有方法,但没有提到字段是私有的还是 public。而且,与私有方法不同,字段确实出现在 class 签名中,就好像它们是 public.
对象的字段是私有的。您需要公开访问器方法才能从外部访问它们。
我在 OCaml 中创建了一个 point
class,由一对 int
和一个 set
方法组成:
# class point (x : int) (y : int) =
object
val mutable x = x
val mutable y = y
method set x' y' = x <- x'; y <- y'
end;;
class point :
int ->
int ->
object
val mutable x : int
val mutable y : int
method set : int -> int -> unit
end
然后我实例化了一个点:
# let p = new point 1 2;;
val p : point = <obj>
但是我无法访问它的字段:
# p#x;;
Error: This expression has type point
It has no method x
# p.x;;
Error: Unbound record field x
如何访问对象的字段?
请注意 OCaml manual 确实提到了私有方法,但没有提到字段是私有的还是 public。而且,与私有方法不同,字段确实出现在 class 签名中,就好像它们是 public.
对象的字段是私有的。您需要公开访问器方法才能从外部访问它们。