我是Scala的新手,有点困惑。在经历“Scala for the Impatient”并进行练习时,我尝试了一个结果是字符串“Hello”的所有数值的乘积。我的第一个想法是做以下事情:
"Hello".foldLeft(1)(_.toLong * _.toLong)
然而,表达式(_.toLong * _.toLong)导致运算符和操作数之间的类型不匹配,期望Int,但它收到了Long。
以下作品:
"Hello".map(_.toLong).reduce(_ * _)
为什么运营商'*'在使用foldLeft时期望使用Int而不是Long?这是因为列表的内容吗?字符是否隐式转换为Ints?
谢谢!
答案 0 :(得分:5)
(将我的评论提升为答案,以便可以关闭该问题。)
这是因为您的初始参数1
的类型为Int
。您可以将其更改为1L
。