kotlin - 为什么单字符和“单字符字符串”在转换为长 (.toLong()) 时不相等
问题描述
我想对Long
变量的数字求和并将其添加到它自己的变量中,我带来了下一个工作代码:
private fun Long.sumDigits(): Long {
var n = this
this.toString().forEach { n += it.toString().toLong() }
return n
}
用法:assert(48.toLong() == 42.toLong().sumDigits())
我必须使用it.toString()
它才能让它工作,所以我进行了下一个测试,但我没有得到它的结果:
@Test
fun toLongEquality() {
println("'4' as Long = " + '4'.toLong())
println("\"4\" as Long = " + "4".toLong())
println("\"42\" as Long = " + "42".toLong())
assert('4'.toString().toLong() == 4.toLong())
}
输出:
'4' as Long = 52
"4" as Long = 4
"42" as Long = 42
使用它是一个好习惯char.toString().toLong()
还是有更好的方法来char
转换Long
?
"4"
用char
s表示吗?为什么它不等于它的char
表示?
解决方案
从文档中:
class Char : Comparable (source) 表示 16 位 Unicode 字符。在 JVM 上,这种类型的不可为空的值表示为原始类型 char 的值。
有趣 toLong(): 长
以 Long 形式返回此字符的值。
当您使用时,'4' as Long
您实际上会得到 char '4' 的 Unicode (ASCII) 代码
推荐阅读
- javascript - 按逗号将 Ajax 结果拆分为 UL 列表
- api - 如何在 Spring Boot 中获取 ResponseEntity 的值?
- google-chrome - 相同的PNG导致两个不同的图像
- php - php中带有OR条件的多个!isset()
- java - 为什么我不能使用 'tostring' 打印?我如何打印包含类的 arry?
- html - 如何将自定义元素与模板一起使用?
- python - 用辅助轴绘制 2 条线,但不显示第一列数据
- r - 对从命令行 (optparse) R 传递参数感到困惑,即使使用显式“默认”选项也不会存储参数
- php - 注意:第 6 行中的数组到字符串的转换!关于 SQL 的问题
- r-markdown - RMarkdown 到 PPT:未加载 reference_doc()