scala - Char或String-> Scala中的Unicode值?

标签 scala unicode

因此,我正在完成“不耐烦的scala”中的一些练习,其中一个是:

编写一个for循环,以计算字符串中所有字母的Unicode码的乘积。例如,“Hello”中字符的乘积为9415087488L。

下一个问题是执行相同的操作,但是没有for循环-这表明我们应该在Scaladoc中检查StringOps

我检查了Scaladoc中的RichCharStringOps部分,也许是我看错了或者在错误的地方找了东西,但是我找不到任何能使我匹配其输出的东西。到目前为止,我已经尝试过:

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和non-for的方式进行此操作?

谢谢!

最佳答案

当您执行x.foldLeft(1)(_ * _.toInt)时,结果类型将推断为Int,但是9415087488太大了,无法用Int进行存储。

因此,您需要使用Long告诉Scala进行存储。

scala> val x = "Hello"
x: java.lang.String = Hello

scala> x.foldLeft(1L)(_ * _.toInt)
res1: Long = 9415087488

scala> var x: Long = 1
x: Long = 1

scala> for (c <- "Hello") x *= c.toInt

scala> x
res7: Long = 9415087488

关于scala - Char或String-> Scala中的Unicode值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165635/

相关文章:

delphi - Delphi 2010 中的 Indy IdHttp Post 问题

c# - 日本字符显示?符号

unicode - 使用 (Core)Foundation 折叠/规范化连字(例如 Æ 到 ae)

scala - 为什么隐式转换在列表中不起作用?

java - Scala Eclipse IDE 编译器在运行 "clean"之前给出错误

Scala - 正整数之和为负 - 溢出异常?

java - 在运行时远程探测 Scala/Java 应用程序

scala - 使用多重继承从Scala中的不同特征调用不同的方法

Python 相同的字符不等于

unicode - Demotic 脚本是否以 Unicode 表示?