如何使List [String]成为字符串列表

时间:2015-08-30 00:51:34

标签: scala

我有一个Option [List [String]],我有几个字段,想要用它们作为参数创建一个对象。除了手动之外,有没有办法做到这一点?

详细说明:

class Foo(var1: String, var2: String, var3: String)

我无法做到

foo = new Foo(datarow)

宁可不做

foo = new Foo(datarow.get(0), datarow.get(1), datarow.get(2))

1 个答案:

答案 0 :(得分:9)

有一种安全的方法可以做到这一点,但仍然非常简洁:

class Foo(var1: String, var2: String, var3: String)

val datarow = Option(List("a", "b", "c"))

val result: Option[Foo] = datarow.collect {
  case v1 :: v2 :: v3 :: _ => new Foo(v1, v2, v3)
}

collect和列表前三个元素上的模式匹配的组合表示"如果此Option不是空的,并且它包含至少包含三个的列表元素,使用它们来实例化Foo"。

您最终得到的是Option[Foo],而不是Foo,但这是一个很小的代价,可以避免运行时错误,因为Option为空或列表没有#&# 39;没有足够的元素。