I\'m developing a class with several lateinit
properties of one type. I think it\'s too verbose to declare each of them on separate line like this:
Looking at the grammar this is not possible:
property (used by memberDeclaration, declaration, toplevelObject)
: modifiers ("val" | "var")
typeParameters? (type "." | annotations)?
(multipleVariableDeclarations | variableDeclarationEntry)
typeConstraints
("by" | "=" expression SEMI?)?
(getter? setter? | setter? getter?) SEMI?
;
You can only do destructing declarations with:
val (name, age) = person
You can use kotlin's destructuring declaration, but it doesn't work for lateinit
prefix.
var (a, b, c, d) = listOf("fly", 23, "slow", 28)
println("$a $b $c $d")
It is a workaround and creates unnecessary list initialization but it gets the job done.
Also you won't be able to define variable types yourself but the type inference is automatically done when using destructuring declarations.
No, there is no way to do that. Declaring multiple properties on the same line is frowned upon by many Java style guides, so we did not implement support for that in Kotlin.