Первая проблема заключается в том, что метод get
возвращает Option
:
scala> val result = hash.get("test")
result: Option[List[Any]] = Some(List(1, true, 3))
Таким образом, вам нужно сопоставить с Some(List(...))
, а не List(...)
.
Далее вы проверяете, содержит ли список объекты Int
, Boolean
и Int
снова, а не если он содержит объекты, чьи типы равны Int
, Boolean
и Int
снова.
Int
и Boolean
являются типами и объектами-компаньонами. Рассмотрим:
scala> val x: Int = 5
x: Int = 5
scala> val x = Int
x: Int.type = object scala.Int
scala> val x: Int = Int
<console>:13: error: type mismatch;
found : Int.type (with underlying type object Int)
required: Int
val x: Int = Int
^
Таким образом, правильное выражение соответствия будет:
case Some(List(_: Int, _: Boolean, _: Int)) => println("found")