Scala 什么是;外部=>&引用;真的吗?
是否有关于“outer=>”功能的文档?它看起来像是带有推断类型的自类型注释。但是我觉得我错了 如果是这样的话,这只是表示访问Scala 什么是;外部=>&引用;真的吗?,scala,Scala,是否有关于“outer=>”功能的文档?它看起来像是带有推断类型的自类型注释。但是我觉得我错了 如果是这样的话,这只是表示访问super的另一种方式吗 trait A extends (B => C) { outer => def apply(x: B): C = outer(x) } 这是另一种访问此的方式。当外部this将被内部类中的另一个this隐藏时,它非常有用。这样,您只需为外部this提供一个附加名称(原始this在作用域中时仍然可用,因此它不是重命名)即可。不
super
的另一种方式吗
trait A extends (B => C) {
outer =>
def apply(x: B): C = outer(x)
}
这是另一种访问此的方式。当外部
this
将被内部类中的另一个this
隐藏时,它非常有用。这样,您只需为外部this
提供一个附加名称(原始this
在作用域中时仍然可用,因此它不是重命名)即可。不是超级
,而是外部作用域。这是一种对不同范围使用别名的方法。例如:
class A(val x:Int) { thisA =>
class B {
val x = 2
val y = x + thisA.x // without thisA how could we use A.x instead of B.x ? (*)
}
}
有一个更好的例子
(*)还有另一种方法可以达到同样的效果,但这超出了这个问题。谢谢你的回答。在给定的示例中,如何扩展外部范围?外部(x)是(B=>C)的应用方法吗?或者是“这个”范围,即特质A的应用方法?或者如果我用A做新的D,它会是D的应用吗?在这两种情况下,你的例子和新的D扩展了A,outer()将是A的outer.apply()。对于像我这样好奇的人来说,“另一种方式”是A.this.x。@dave,你是对的。现在,如果B中还有另一个A类呢?:)