我正在开发一个具有一种类型的lateinit
个属性的类。我认为将它们中的每一个单独声明为这样过于冗长:
lateinit var a: String
lateinit var b: String
所以我想在一行上声明它们:
lateinit var b, c: String // error: Property getter or setter expected
但我收到错误Property getter or setter expected
。有没有办法在Kotlin的一行声明几个属性?
答案 0 :(得分:42)
不,没有办法做到这一点。许多Java样式指南都不赞成在同一行上声明多个属性,因此我们没有在Kotlin中实现对该属性的支持。
答案 1 :(得分:9)
查看语法是不可能的:
$node_(0) set X_ -0.31
$node_(1) set Y_ 1274.64
ns_ at 1.0 "$node_(0) setdest -0.31 1274.64 0.00"
ns_ at 2.1 "$node_(1) setdest 2041.48 295.29 2.52"
你只能用以下方法破坏声明:
property (used by memberDeclaration, declaration, toplevelObject)
: modifiers ("val" | "var")
typeParameters? (type "." | annotations)?
(multipleVariableDeclarations | variableDeclarationEntry)
typeConstraints
("by" | "=" expression SEMI?)?
(getter? setter? | setter? getter?) SEMI?
;
答案 2 :(得分:1)
如果你想用相同的值初始化多个字段,你可以这样做:
val (x, y, z) = List(3) { 1 }
val (x, y, z) = List(3) { "Hello" }
等等。
答案 3 :(得分:0)
就像EarlOfEgo所说,有一种技巧可以在Kotlin中使用,但不适用于lateinic
前缀。
var (a,b,c,d) = listOf("fly",23,"slow",28)
println("$a $b $c $d")