如何在一行上声明多个属性

时间:2016-01-27 11:39:08

标签: kotlin

我正在开发一个具有一种类型的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的一行声明几个属性?

4 个答案:

答案 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")