将数组中的值分配给各个变量的惯用方式

时间:2019-08-26 09:04:55

标签: kotlin

有一个长度为4的数组

$ make
2
foo  have-foo-1
foo  have-foo-2
bar  have-bar-1
 bar have-bar-2
foo have-foo-3

------------------
 have-foo-1 have-foo-2 have-foo-3
------------------
 have-bar-1 have-bar-2

代码中除0、1和2以外的任何数字都会导致 不允许通过静态代码检查器投诉MagicNumber。

基本上是这个问题,但对于Kotlin,Java - quick way of assigning array values to individual variables

鉴于束缚,这是怎么写的?我尝试将索引命名为应该执行的静态代码检查器提示,但是说实话这不是很好:

var foo: String? // These variable declarations are out of your control
var foo2: String? // they are part of a bean and an api contract
var foo3: String?
var foo4: String?

var bars: Array<String> = Array(NUMBER_OF_BARS) { "" }

foo = bars[0]
foo2 = bars[1]
foo3 = bars[2]
foo4 = bars[3] // <- Invalid

那没意思

1 个答案:

答案 0 :(得分:2)

如果您的数组是bars,那么Kotlin允许您这样做

var (foo, foo2, foo3, foo4, foo5) = bars

请确保您没有尝试创建比数组包含的变量更多的变量。这将导致异常。如果您不创建新变量,则此方法将行不通。但是好消息是,以上声明基本上只是使用componentN方法的语法糖,因此您可以直接使用它们。

foo = bars.component1()
foo2 = bars.component2()
foo3 = bars.component3()
foo4 = bars.component4()

比仅使用索引更冗长,但是它将使您的静态代码检查器关闭。