【问题标题】:Generate a List with values generated by function in Scala使用Scala中的函数生成的值生成一个列表
【发布时间】:2011-11-02 01:58:19
【问题描述】:

我必须生成一些随机数并将它们相加。像

result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _)

如果generateList 生成一个List,其大小=max,值由generatorFunctionReturningInt 生成

或者可能是这样的

result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _)

【问题讨论】:

    标签: list scala generator


    【解决方案1】:

    foreach 不是用于返回结果,而是使用 map:

    val result = Range (0, max).map (generatorFunctionReturningInt).map (sum _)
    

    具体来说,sum 已经预定义了,不是吗?

    val result = Range (0, max).map (generatorFunctionReturningInt).sum
    

    工作代码(我们都喜欢工作代码)

    val result = Range (0, 15).map (3 + _).sum
    result: Int = 150
    

    对于这种简单的情况,它与Range (3, 18).sum 相同。

    【讨论】:

      【解决方案2】:

      简单

      (0 to max).map(_ => (new util.Random).nextInt(max)).sum
      

      其中max 定义了数字的数量和随机范围。

      foreach 方法旨在与不返回任何内容的副作用函数(如 println)一起使用(Unit)。

      【讨论】:

        【解决方案3】:

        这个怎么样?

        Stream.continually(generatorFunctionReturningInt()).take(max).sum
        

        【讨论】:

          【解决方案4】:

          各种集合类型的伴生对象都有一些方便的工厂方法。试试:

          Seq.fill(max)(generate)
          

          【讨论】:

            猜你喜欢
            • 2016-04-28
            • 2017-07-01
            • 2012-03-31
            • 2015-01-16
            • 2017-04-22
            • 2020-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多