我正在玩方法重新定义,我发现了这个愚蠢的例子:
class a =
object
method get (x : a) = x
end
class b =
object
inherit a
method get (x : b) = x
end
我明确指定我希望 b 类的 get 方法采用 ab 并返回 ab,但方法签名是 a -> a。如果我这样做 (new b)#get(new a) 他会很高兴,而他真的不应该这样做。之后我添加了一些愚蠢的东西:
class a =
object
method get (x : a) = x
end
class b =
object
inherit a
method get (x : b) = x#foo(x)
method foo (x : a) = x
end
我得到Error: This expression has type b
It has no method foo
到底发生了什么?