Scala内部类类型-类型不匹配错误
运行下面的代码时,我遇到了一个非常奇怪的键入错误 此代码的目标是创建一个类,该类可以将该类的其他实例与自身结合起来,生成更新的实例。也许我更喜欢不变性并返回副本,但这是另一个讨论 IntelliJ不会抱怨,直到我尝试运行代码,然后它崩溃 发现类型不匹配:mic.MyInternalClass 必需:MyClass.this.MyInternalClass this.myVar= this.myVar.combinemic.myVar 我刚找到这个链接: 看起来内部类方法需要一个特殊类型,如下所示:Scala内部类类型-类型不匹配错误,scala,Scala,运行下面的代码时,我遇到了一个非常奇怪的键入错误 此代码的目标是创建一个类,该类可以将该类的其他实例与自身结合起来,生成更新的实例。也许我更喜欢不变性并返回副本,但这是另一个讨论 IntelliJ不会抱怨,直到我尝试运行代码,然后它崩溃 发现类型不匹配:mic.MyInternalClass 必需:MyClass.this.MyInternalClass this.myVar= this.myVar.combinemic.myVar 我刚找到这个链接: 看起来内部类方法需要一个特殊类型,如下所示
def combine(mic: MyClass#MyInternalClass): MyInternalClass = {
仍在学习为什么会出现这种情况的细微差别。每个实例的MyInternalClass在Scala中都被视为一个单独的类型,因此您不能混合使用this和mic的MyInternalClass。如果这不是您想要的,与其到处使用MyClassMyInternalClass,不如将MyInternalClass声明移动到伴随对象:
// otherwise you'll need to write MyClass.MyInternalClass explicitly even inside MyClass
import MyClass.MyInternalClass
class MyClass(s: String) {
var myVar: MyInternalClass = new MyInternalClass(s)
def combine(mic: MyClass): MyClass = {
this.myVar = this.myVar.combine(mic.myVar)
this
}
}
object MyClass {
class MyInternalClass(s: String) {
var myInternalVar: String = s
def combine(mic: MyInternalClass): MyInternalClass = {
this.myInternalVar += mic.myInternalVar
this
}
}
}
// otherwise you'll need to write MyClass.MyInternalClass explicitly even inside MyClass
import MyClass.MyInternalClass
class MyClass(s: String) {
var myVar: MyInternalClass = new MyInternalClass(s)
def combine(mic: MyClass): MyClass = {
this.myVar = this.myVar.combine(mic.myVar)
this
}
}
object MyClass {
class MyInternalClass(s: String) {
var myInternalVar: String = s
def combine(mic: MyInternalClass): MyInternalClass = {
this.myInternalVar += mic.myInternalVar
this
}
}
}