Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 如何在一行上声明多个属性_Kotlin - Fatal编程技术网

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

Kotlin 如何在一行上声明多个属性,kotlin,Kotlin,我正在开发一个类,其中包含一种类型的多个lateinit属性。我认为这样在单独的行中声明它们太冗长了: lateinit var a: String lateinit var b: String lateinit var b, c: String // error: Property getter or setter expected 因此,我想在一行上声明如下: lateinit var a: String lateinit var b: String lateinit var b,

我正在开发一个类,其中包含一种类型的多个
lateinit
属性。我认为这样在单独的行中声明它们太冗长了:

lateinit var a: String 
lateinit var b: String
lateinit var b, c: String // error: Property getter or setter expected
因此,我想在一行上声明如下:

lateinit var a: String 
lateinit var b: String
lateinit var b, c: String // error: Property getter or setter expected

但是我得到了一个错误
属性getter或setter预期值
。有没有办法在Kotlin的一行上声明多个属性?

没有,没有办法。许多Java风格指南都不赞成在同一行声明多个属性,因此我们没有在Kotlin中实现对这些属性的支持。

查看语法,这是不可能的:

property (used by memberDeclaration, declaration, toplevelObject)
  : modifiers ("val" | "var")
      typeParameters? (type "." | annotations)?
      (multipleVariableDeclarations | variableDeclarationEntry)
      typeConstraints
      ("by" | "=" expression SEMI?)?
      (getter? setter? | setter? getter?) SEMI?
  ;
您只能通过以下方式执行销毁声明:

val (name, age) = person

您可以使用kotlin的解构声明,但它不适用于
lateinit
前缀

var (a, b, c, d) = listOf("fly", 23, "slow", 28)
println("$a $b $c $d")
这是一种变通方法,创建了不必要的列表初始化,但它完成了任务


此外,您自己也无法定义变量类型,但在使用非结构化声明时,类型推断会自动完成

有没有可能在以后实施呢?我们现在没有这样的计划。嗯,也许这是我个人的喜好,但我宁愿把x,y,z放在一行,也不愿有三行新的代码。@yole为什么不赞成呢。?你能举例说明哪些地方被认为是不好的,以及原因吗。考虑到kotlin完全是为了消除样板代码,如果kotlin也允许的话,它将减少冗余代码!“许多Java风格指南都不赞成在同一行声明多个属性”——需要引用。由于Java没有与Kotlin相同意义上的“属性”,因此澄清这意味着什么是有帮助的。也许你指的是字段?这包括变量和属性。