Проблема в том, что вы, вероятно, используете сопоставление с образцом каким-то неправильным способом. Как ... Вы не предоставили полный код. Я понятия не имею, что это за ошибка.
Я уверен, что проблема где-то еще, как следующий код (который почти так же, как то, что вы дали) работает безотказно,
scala> :pa
// Entering paste mode (ctrl-D to finish)
case class A(c: String) {
val b: String = c
}
def demoA(a: A): String = a match {
case A(iAmC) => {
val x = a.b
x
}
}
// Exiting paste mode, now interpreting.
defined class A
demoA: (a: A)String
scala> val anA = A("sdfsd")
anA: A = A(sdfsd)
scala> demoA(anA)
res3: String = sdfsd
Так ... в основном, если у вас есть случай класса как следующий ,
case class A(b: String, c: String)
Теперь следующее было бы сработало.
private def foo(a:A): B = a match{
case A(iAmB, iAmC) => {
// iAmB and iAmC have values of a.b and a.c repectively
...
}
}
В вашем случае ... ваша функция ясно говорит, что ваш a
является экземпляром A
- def foo(a:A)
так ... вы действительно не нужно сопоставление с образцом здесь.
private def foo(a:A): B = {
// Now class A should have member b and c
val iAmB = a.b
val iAmC = a.c
...
}
До сих пор это выглядит хорошо. Я думаю, что проблема кроется в коде, который не показан. Можете ли вы предоставить самодостаточный пример? – ziggystar