scala – 使用列表中的参数调用函数
发布时间:2020-12-16 18:33:17 所属栏目:安全 来源:网络整理
导读:有没有办法用列表中的参数调用函数? Python中的等价物是sum(* args). // Scaladef sum(x: Int,y: Int) = x + yval args = List(1,4)sum.???(args) // equivalent to sum(1,4) sum(args:_ *)在这里不起作用. 不管怎样,不要提供改变功能的声明.我熟悉一个带
有没有办法用列表中的参数调用函数?
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:_ *)在这里不起作用. 解决方法
好吧,你可以写
sum(args(0),args(1)) 但我想你希望这适用于任何列表长度?然后你会去折叠或减少: 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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |