首页 > 解决方案 > 使用 Array() 构造函数声明数组的正确方法?

问题描述

我知道Array()构造函数有两个参数:数组的大小和一个接收数组索引并返回该索引值的函数。

我在 kotlinlang.org 在线 IDE 中编写了一些示例程序,并声明并初始化了我的数组:

var array = Array(9, {i -> ' '})

一个大小为 9 的“空白”字符数组,完全用空格填充。这在 kotlinlang.org 编译器中运行良好,并且运行良好;但是,当我尝试将相同的代码导入 IntelliJ-IDEA 时,我收到以下警告:

警告:Kotlin:参数 'i' 从未使用过,可以重命名为 _

下划线字符是什么意思?它如何充当索引?重命名i_确实删除了警告,但它究竟做了什么?

我应该如何正确使用Array()构造函数来使用 lambda 表达式初始化数组?请记住,我知道 lambda 表达式可以写在方括号之外,但我还是选择包含它,因为它非常简单。

提前致谢。

标签: arraysintellij-idealambdakotlin

解决方案


它说“警告”而不是“错误”。

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除非你特别想要一个可变变量,否则你应该喜欢。


推荐阅读