我正在尝试匹配Option
,并测试是否包含发出呼叫对象的Some
。所以我想写的代码如下:
methodReturningOption() match {
case Some(this) => doSomething()
case _ => doSomethingElse()
}
但无法编译,错误
''预期但'''找到了
我也尝试使用Some(`this`)
来提供错误
未找到:重视此
如果我添加一个引用this
val This = this
methodReturningOption() match {
case Some(This) => doSomething()
case _ => doSomethingElse()
}
但这看起来很难看,似乎是一种不愉快的解决方法。是否有一种更简单的模式匹配方式this
作为参数?
答案 0 :(得分:4)
我想你可以试试这个:
methodReturningOption() match {
case Some(x) if x == this => doSomething()
case _ => doSomethingElse()
}
答案 1 :(得分:1)
看起来this
被视为特殊关键字,无法在该上下文中使用。
Jack Leow的解决方案可能是最好的 - 我建议继续使用它,因为它更明确。但是作为替代方案,您还可以创建一个变量指向“这个'使用以下语法。 (注意第一行的self =>
)
class Person { self =>
def bla() = methodReturningOption() match {
case Some(`self`) => ???
case _ => ???
}
}
这并没有真正回答这个问题,它只是一种可能对您有用的替代语法。