gpt4 book ai didi

scala - 在 Scala 中引用内部类的类型

转载 作者:行者123 更新时间:2023-12-03 23:31:21 26 4
gpt4 key购买 nike

以下代码试图模仿 Polymorphic Embedding of DSLs : 而不是给出 Inner 中的行为, 它被编码在 useInner其封闭类的方法。我添加了 enclosing方法,以便用户只需保留对 Inner 的引用实例,但总是可以得到它们的封闭实例。通过这样做,所有 Inner来自特定 Outer 的实例实例只绑定(bind)到一种行为(但这里需要它)。

abstract class Outer {
sealed class Inner {
def enclosing = Outer.this
}
def useInner(x:Inner) : Boolean
}

def toBoolean(x:Outer#Inner) : Boolean = x.enclosing.useInner(x)

它不编译并且 scala 2.8 提示:
type mismatch; found: sandbox.Outer#Inner
required: _81.Inner where val _81:sandbox.Outer

来自 Programming Scala: Nested classesA Tour of Scala: Inner Classes ,在我看来,问题在于 useInner期望作为参数 Inner来自特定 Outer 的实例实例。

什么是真正的解释以及如何解决这个问题?

最佳答案

我想 Inner 类型就像 this.Inner 类型。 Outer#Inner 独立于外部实例(不是依赖于路径的类型)。

abstract class Outer {
sealed class Inner {
def enclosing = Outer.this
}
def useInner(x:Outer#Inner) : Boolean
}

def toBoolean(x:Outer#Inner) : Boolean = x.enclosing.useInner(x)

关于scala - 在 Scala 中引用内部类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com