我有一个非常简单的案例类,叫做 FooPosition:
case class FooPosition(x: Int, y: Int)
和一个Foo
有FooPosition
. 我有兴趣创建一个函数,该函数仅对(x-1, y)
与Foo
对象相等的坐标返回 -1,而在其他任何地方都返回 0。所以我写道:
class Foo(position: FooPosition) {
def bar = (p: FooPosition) => p match {
case FooPosition(position.x - 1, position.y) => -1
case FooPosition(_, _) => 0
}
}
这会导致显示“未找到:值 -”的错误。有趣的是,
val myFoo = FooPosition(1, 0)
val newFoo = FooPosition(myFoo.x - 1, myFoo.y)
工作得很好。我显然在这里遗漏了一些关于模式匹配的东西(因为我是初学者)。但是这个问题的优雅解决方案是什么?我已经解决了这个问题
class Foo(position: FooPosition) {
private val left = FooPosition(position.x - 1, position.y)
def bar = (p: FooPosition) => p match {
case `left` => -1
case FooPosition(_, _) => 0
}
}
但我认为必须有更好的方法。
提前致谢。