kotlin - 为什么 IntArray 上的 toString 会将地址添加到 Kotlin 中的列表中?
问题描述
我刚刚开始使用 Kotlin,并且正在学习 Udacity 的 Kotlin 训练营课程。
我想解决以下问题陈述:
- 创建一个名为 numbers 的整数数组,从 11 到 15。
- 为字符串创建一个空的可变列表。
- 编写一个循环遍历数组并将每个数字的字符串表示形式添加到列表中的 for 循环。
- 另外请参阅正确添加的编号(打印出列表的内容)。
代码:
var numbers : IntArray = intArrayOf(11, 12, 13, 14, 15)
var strList : MutableList<String> = mutableListOf<String>()
println("Now adding nos to strList")
for (number in numbers) {
strList.add(numbers.toString())
}
println(strList)
奇怪的是我看到如下结果:
Now adding nos to strList
[[I@3bc04539, [I@3bc04539, [I@3bc04539, [I@3bc04539, [I@3bc04539]
我知道这听起来很简单,但是为什么 Kotlin 会打印对 no 的引用而不是实际数字本身呢?
解决方案
我认为这里真正的问题是您的线路:
strList.add(numbers.toString())
应该是:
strList.add(number.toString())
照原样,它每次都尝试打印整个数组。而且由于 IntArray 似乎没有toString()
自行实现,因此您会得到默认的 in Object
,它是唯一的,但不是很有帮助。
推荐阅读
- tensorflow - 使用 float16 的 TensorFlow 2.2 仅在 CPU 上执行
- c# - C# 控制台:您能否在与项目相同的文件夹中找到 .wav 文件
- karate - 在 KarateDSL 中,如何从服务响应(一种键值响应)中获取键?
- r - 如何计算R中距离矩阵的加权平均值和标准差
- python - 如何在烧瓶管理中隐藏“列表”视图?
- javascript - 如何从 chrome 的缓存中加载画布中的图像?
- php - 在请求 sql 中获取同名的行
- systemc - 是否有更好/替代方法来实现 SystemC 模块中的延迟
- python - 在python中打开json文件
- javascript - Vue.js 示例项目消息未更新