Object 如何使用Ocaml对象中的另一个val定义val?
对于Ocaml中的这个片段,我知道我可以在一个方法中做到这一点,比如将b定义为可变的并在一个方法中计算它。但这不是一种简洁的方法,因为我需要在某个地方调用该方法。我可以用更好的方法来实现这一点吗?一种可能性是在初始值设定项中设置b的值:Object 如何使用Ocaml对象中的另一个val定义val?,object,ocaml,Object,Ocaml,对于Ocaml中的这个片段,我知道我可以在一个方法中做到这一点,比如将b定义为可变的并在一个方法中计算它。但这不是一种简洁的方法,因为我需要在某个地方调用该方法。我可以用更好的方法来实现这一点吗?一种可能性是在初始值设定项中设置b的值: class my_object = object (self) val a = (* a lot of computation *) val b = (* use the result of a *) end c
class my_object =
object (self)
val a = (* a lot of computation *)
val b = (* use the result of a *)
end
class my\u对象=
对象(自身)
val a=14
val可变b=0
初始值设定项b可以在类
声明和对象
定义之间定义局部变量,如中所示
class my\u对象=
让我的a=(*大量计算*)进来
让我的_b=(*使用我的_a*)在
对象(自身)
val a=我的a
val b=我的
完;;;
请注意,对于这样的定义,my_a
和my_b
的计算将在类定义本身发生一次。如果要对每个实例重新进行计算(例如,因为它取决于可变状态),只需向类中添加一个单位参数:
class my_对象()=
让我的a=(*大量计算*)进来
让我的_b=(*使用我的_a*)在
对象(自身)
val a=我的a
val b=我的
完;;;
在这种情况下,一个实例将由newmyu对象()
创建。当然,您可以有任意数量和类型的参数(包括对计算a
或b
有用的参数),而不是()
您真的需要类吗?或者你能用普通函数创建对象吗?根据我的经验,很少有课程是有益的。我本人从未在任何严肃的开发中使用过它们。当然,即使对于类,您也可以编写一个构建器函数来预计算值,但对于预期使用new
创建的类来说,这要尴尬得多。
class my_object =
object(self)
val a = 14
val mutable b = 0
initializer b <- a + 10
end