Scala 我可以在烫伤映射方法中输出集合而不是元组吗?

Scala 我可以在烫伤映射方法中输出集合而不是元组吗?,scala,scalding,Scala,Scalding,如果您想创建一个包含22个以上字段的管道,而不是一个较小字段的管道,那么Scala元组会限制您的操作,因为Scala元组不能包含22个以上的项 有没有办法使用集合而不是元组?我在下面的例子中设想了一些类似的情况,但遗憾的是,这不起作用: input.read.mapTo('line -> aLotOfFields) { line: String => (1 to 24).map(_.toString) }.write(output) 事实上你可以。常见问题解答- 最后一个映射(

如果您想创建一个包含22个以上字段的管道,而不是一个较小字段的管道,那么Scala元组会限制您的操作,因为Scala元组不能包含22个以上的项

有没有办法使用集合而不是元组?我在下面的例子中设想了一些类似的情况,但遗憾的是,这不起作用:

input.read.mapTo('line -> aLotOfFields) { line: String =>
  (1 to 24).map(_.toString)
}.write(output)

事实上你可以。常见问题解答-


最后一个映射(u.asInstanceOf[AnyRef])看起来很难看,因此如果您找到更好的解决方案,请告诉我。

将元组包装到case类中。它还将使代码比分别使用元组和集合更具可读性和类型安全性

val toFields = (1 to 24).map(f => Symbol("field_" + f)).toList

input
  .read
  .mapTo('line -> toFields) { line: String =>
    new Tuple((1 to 24).map(_.toString).map(_.asInstanceOf[AnyRef]): _*)

  }