gpt4 book ai didi

scala - 使用列表中的参数调用函数

转载 作者:行者123 更新时间:2023-12-04 21:17:40 24 4
gpt4 key购买 nike

有没有办法用列表中的参数调用函数? Python 中的等效项是 sum(*args) .

// Scala

def sum(x: Int, y: Int) = x + y
val args = List(1, 4)

sum.???(args) // equivalent to sum(1, 4)
sum(args: _*)不会在这里工作。
无论如何不要提供更改函数的声明。我熟悉一个带有重复参数的函数 def sum(args: Int*) .

最佳答案

嗯,你可以写

sum(args(0), args(1))

但是我假设您希望它适用于任何列表长度?然后你会去找 foldreduce :
args.reduce(sum)  // args must be non empty!

(0 /: args)(sum) // aka args.foldLeft(0)(sum)

这些方法假设列表的成对减少。例如, foldLeft[B](init: B)(fun: (B, A) => B): B减少类型为 A 的元素列表到 B 类型的单个元素.在本例中, A = B = Int .它从初始值 init 开始.由于您要求和,因此空列表的总和将为零。然后它使用当前累加器(运行总和)和列表的每个连续元素调用该函数。

所以就像
var result = 0
result = sum(result, 1)
result = sum(result, 4)
...
reduce方法假定列表非空并且要求元素类型不改变(函数必须从两个 Int 映射到一个 Int )。

关于scala - 使用列表中的参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com