gpt4 book ai didi

scala - 为什么 "Hello".foldLeft(1)(_.toLong * _.toLong) 是错误的?

转载 作者:行者123 更新时间:2023-12-01 11:44:11 25 4
gpt4 key购买 nike

我是 Scala 的新手,有点困惑。在学习“Scala for the Impatient”和做练习时,我尝试了一个结果是字符串“Hello”的所有数值的乘积。我的第一个想法是执行以下操作:

"Hello".foldLeft(1)(_.toLong * _.toLong)

但是,表达式 (_.toLong * _.toLong) 导致运算符和操作数之间的类型不匹配,预期为 Int,但收到的是 Long。

不过,以下是可行的:

"Hello".map(_.toLong).reduce(_ * _)

为什么运算符“*”在使用 foldLeft 时需要 Int 而不是 Long?是因为列表的内容吗?字符是否隐式转换为 Ints?

谢谢!

最佳答案

(将我的评论提升为答案以便关闭问题。)

这是因为您的初始参数 1 的类型为 Int。您可以通过将其更改为 1L 来解决此问题。

关于scala - 为什么 "Hello".foldLeft(1)(_.toLong * _.toLong) 是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951925/

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