Próbuję konwertować listę [dowolny] do krotki z niektórymi typami danych.

def matchValue(list: List[Any]):(Int, Int, Int, Option[String], String,Option[Date],String, Date,String, Option[Int],Option[String])= {
      list match {
        case i1::i2::i3::i4::i5::i6::i7::i8::i9::i10::i11 => (i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11)
      }
    }

Ale mam błąd:

Ekspresja typu dowolny nie jest zgodny z oczekiwanym typem

0
K.Palyanichka 17 luty 2017, 17:06

2 odpowiedzi

Najlepsza odpowiedź

Możesz pisać

case (i1: Int) :: (i2: Int) :: // etc
  1. Jeśli masz wiele podobnych przypadków z różnymi docelowymi Ktoczkami, rzeczywiście chcesz, aby coś takiego jak bezkształtne (takie same rozmiary krotki można obsługiwać).

  2. : Option[String] Wzór może rzeczywiście sprawdzić tylko argument, jest Option. Dostaniesz ostrzeżenie o tym, co można zignorować za pomocą Option[String @unchecked], ale należy to zrobić tylko wtedy, gdy jesteś pewien, że naprawdę otrzymasz Option[String].

1
Alexey Romanov 17 luty 2017, 14:30

Możesz spróbować przekonwertować każdą wartość na swój prymitywny typ za pomocą x.asInstanceOf[T]. Tak więc na przykład x.asIntanceOf[Int] konwertuje dowolny x do Int.

0
acidghost 17 luty 2017, 14:31