将列表[Any]转换为具有不同类型值的元组

时间:2017-02-17 14:06:58

标签: scala

我尝试将List [Any]转换为使用某些数据类型的元组。

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)
      }
    }

但我有错误:

  

Any类型的表达式不符合预期类型Int

2 个答案:

答案 0 :(得分:1)

你可以写

case (i1: Int) :: (i2: Int) :: // etc
  1. 如果您有许多具有不同目标元组的类似案例,您确实需要像无形的东西(可以处理相同的元组大小)。

  2. : Option[String]模式实际上只能检查参数是Option。您将收到有关此内容的警告,使用Option[String @unchecked]可以忽略此警告,但只有在您确定自己真正获得Option[String]时才能进行此警告。

答案 1 :(得分:0)

您可以尝试使用x.asInstanceOf[T]将每个值转换为其基本类型。例如,x.asIntanceOf[Int]会将任何x转换为Int