我想编写一个采用特定单例对象类型的方法,如下所示:
object X
def foo(x: X.type) = ??? // this doesn't compile
但是,这不会编译。
如果您想知道,我的实际用例如下:
class Outer { object Inner }
def foo(x: Outer#Inner.type) = ??? // this doesn't compile
这可能吗?
答案 0 :(得分:3)
第一种情况是编译。
scala> object X
defined object X
scala> def foo(x: X.type) = ???
foo: (x: X.type)Nothing
第二种情况,我认为这个问题有点语法缺陷。围绕它的一个方法可能是:
scala> class Outer { object Inner; type InnerType = Inner.type }
defined class Outer
scala> def foo(x: Outer#InnerType) = ???
foo: (x: _1.Inner.type forSome { val _1: Outer })Nothing