将方法参数的类型指定为singleton对象的类型

时间:2016-06-28 18:45:36

标签: scala

我想编写一个采用特定单例对象类型的方法,如下所示:

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

这可能吗?

1 个答案:

答案 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