gpt4 book ai didi

scala - 为什么这个折叠不正确?

转载 作者:行者123 更新时间:2023-12-04 17:55:13 28 4
gpt4 key购买 nike

我正在阅读 Scala 编程,但不明白为什么这种折叠操作不正确:

val fruit = List("apples", "oranges", "lemons")
println( (0/:fruit)(_.length+_.length) )

我还尝试使用空字符串 ""作为起始值 - 但也没有编译:
println( (""/:fruit)(_.length+_.length) )

最佳答案

尝试这个:

println( (0 /: fruit)(_ + _.length) )

传递的函数首先接收作为参数的累加器(一个 Int ,根据您的初始值 0 推断),然后是集合的下一个元素(a String ,从 fruit 的类型推断)。

参数的顺序很容易记住,因为它们对应于初始值和集合出现的顺序。在这里,初始值首先出现,因此,累加器作为第一个参数传递——作为第二个参数,你得到集合 fruit 的一个元素。 , 出现在方法名称 /: 之后.

如果你做了一个 foldRight相反,顺序可以方便地颠倒:
println( (fruit :\ 0)(_.length + _) )

关于scala - 为什么这个折叠不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045474/

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