【问题标题】:How to change a list into a tuple in Scala? [duplicate]如何在 Scala 中将列表更改为元组? [复制]
【发布时间】:2014-10-08 15:28:58
【问题描述】:

我有一系列操作,结果被打包在一个元组中,作为方法的参数。

  val bs = byteArrayToBitSet(ba)
  val d = bs.filter(_ < dBits)
  val c = ...
  val b = ...
  val a = ...
  val r = (f(a), f(b), f(c), f(d)) // <--
  ((fn _).tupled)(r)

我想修改元组生成代码如下:

  val r = List(a,b,c,d).map(f(_)) // returns List not tuple

我需要将列表更改为元组才能使用((fn _).tupled)(r)。我怎样才能做到这一点?

如果无法将列表转换为元组,我可能会想出一个将列表作为输入的新方法,但如果可能的话,我希望有元组解决方案。

【问题讨论】:

    标签: list scala tuples


    【解决方案1】:

    元组的数量在编译时是已知的。列表的数量仅在运行时才知道。在运行时将列表转换为元组几乎肯定不会有任何好处。

    在您的示例中,fn 应该有固定数量的参数,四个。在这里使用大小为 4 的列表对您没有帮助。您可能会在元组上寻找 map 方法,但它不存在:

    (1, 2, 3, 4).map(_ + 1)   // method not found
    

    请参阅 this question and answer,了解使用 Shapeless 库提供此类功能的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-09
      • 2018-02-01
      • 2013-11-06
      • 2013-02-22
      • 1970-01-01
      • 2015-02-13
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多