【发布时间】:2021-03-02 14:07:44
【问题描述】:
所以我正在完成“不耐烦的 Scala”中的一些练习,其中之一是:
编写一个for 循环来计算字符串中所有字母的Unicode 代码的乘积。例如,“Hello”中的字符的乘积是 9415087488 L。
下一个问题是做同样的事情,但没有 for 循环 - 它暗示我们应该在 Scaladoc 中检查 StringOps。
我检查了 Scaladoc 中的 RichChar 和 StringOps 部分,也许我误读或看错了地方,但我找不到任何可以让我匹配他们的输出的东西。到目前为止,我已经尝试过:
scala> x.foldLeft(1)(_ * _.toInt)
res0: Int = 825152896
scala> x.foldLeft(1)(_ * _.getNumericValue)
res5: Int = 2518992
scala> x.foldLeft(1)(_ * _.intValue())
res6: Int = 825152896
scala> var x = 1
x: Int = 1
scala> for (c <- "Hello") x *= c.toInt
scala> x
res12: Int = 825152896
与他们的输出不匹配。
如何以for 和非for 方式执行此操作?
谢谢!
【问题讨论】:
-
还有另一种方法,如果您分两步完成。提示:这两个方法中的最后一个只有一个隐式参数。