arrays - 使用 Array() 构造函数声明数组的正确方法?
问题描述
我知道Array()
构造函数有两个参数:数组的大小和一个接收数组索引并返回该索引值的函数。
我在 kotlinlang.org 在线 IDE 中编写了一些示例程序,并声明并初始化了我的数组:
var array = Array(9, {i -> ' '})
一个大小为 9 的“空白”字符数组,完全用空格填充。这在 kotlinlang.org 编译器中运行良好,并且运行良好;但是,当我尝试将相同的代码导入 IntelliJ-IDEA 时,我收到以下警告:
警告:Kotlin:参数 'i' 从未使用过,可以重命名为 _
下划线字符是什么意思?它如何充当索引?重命名i
为_
确实删除了警告,但它究竟做了什么?
我应该如何正确使用Array()
构造函数来使用 lambda 表达式初始化数组?请记住,我知道 lambda 表达式可以写在方括号之外,但我还是选择包含它,因为它非常简单。
提前致谢。
解决方案
它说“警告”而不是“错误”。
Warning: Kotlin: Parameter 'i' is never used, could be renamed to _
代码编译良好,它只是通知您可以将未使用的 lambda 参数重命名为,_
以使 lambda 参数未使用更加明显。
所以,为了回答你的问题,你已经正确地构造了数组。但是,如果出于某种原因您想使用索引来构造数组,您可以将其命名并使用它在 lambda 内部进行计算,该 lambda 为构造数组的每个元素而执行。例如:
val array = Array(10, { i -> i * 10 })
这将导致一个数组,如:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
另外,需要注意的是,您使用了var
,这意味着您的变量array
是可变的(即可以重新分配整个变量)。这可能不是你想要的,所以val
除非你特别想要一个可变变量,否则你应该喜欢。
推荐阅读
- php - 如何取消发布 php artisan laravel-module
- python - 输出控制台中的不同格式与 Python 中保存的文件
- angular - Angular 7:无线电类型的复选框,使用 ngModel 还是更改功能?
- python - 如何删除人口金字塔中的负 X 轴标签?
- ios - 来自ios的到期通知
- javascript - 我如何理解代码中对 Promise 的这种自定义使用
- arrays - 在导入查询中将两个单元格连接在一起
- c++ - Visual Studio 2017 警告说异常被基类捕获,但不是
- axios - axios - 请求池实现
- node.js - 从 YouTube 频道获取所有视频 ID