1
創建一個新的情況下,對象我有一個非常簡單的例子類名爲FooPosition:Scala的模式匹配 - 錯誤而從另一個
case class FooPosition(x: Int, y: Int)
和具有FooPosition
一個Foo
類。我有興趣創建一個函數,該函數僅返回-1,其座標相對於Foo
對象等於(x-1, y)
,並在其他位置返回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
}
}
但我認爲必須有更好的方法。
在此先感謝。
哎呦,我犯了一個錯誤,同時簡化了問題,所以你說,它總是默認爲0。編輯它。 非常感謝您的回答。 – Emre