编译器抱怨A类中定义的方法是递归的,需要result.type但是它不是递归的,因为我调用的是不同的方法,它是编译器错误?
def my(s:String){
}
A级{ def my = my(“sss”)}
答案 0 :(得分:6)
由于你不能在类/特征/对象之外使用方法,我想A
是一个内部类。如果是这样,您可以按如下方式进行:
class Foo { outer =>
def my(s:String) {
}
class A { def my = outer.my("sss") }
}
表示法outer =>
称为自我类型注释,在此表单中仅用于创建this
class Foo
的{{1}}的别名,该别名不会被{{1嵌套类型。
修改强>:
如果外部实体是this
,您只能通过其名称引用它。
<强> EDIT2 强>:
如果您有重载方法,则会出现其他错误。如果从其中一个备选方案中调用重载方法,则需要结果类型。
object
答案 1 :(得分:0)
我认为您需要将def设为不同的名称,例如:
class A { def my2 = my("sss") }