我正在开发一个具有lateinit一种类型的几个属性的类.我认为将它们分别在这样的单独行上声明它是非常冗长的:
lateinit var a: String
lateinit var b: String
Run Code Online (Sandbox Code Playgroud)
所以我想在一行上声明它们:
lateinit var b, c: String // error: Property getter or setter expected
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误Property getter or setter expected.有没有办法在Kotlin的一行声明几个属性?
yol*_*ole 48
不,没有办法做到这一点.许多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?
;
Run Code Online (Sandbox Code Playgroud)
你只能用以下方法破坏声明:
val (name, age) = person
Run Code Online (Sandbox Code Playgroud)
您可以使用 kotlin 的解构声明,但它不适用于lateinit前缀。
var (a, b, c, d) = listOf("fly", 23, "slow", 28)
println("$a $b $c $d")
Run Code Online (Sandbox Code Playgroud)
这是一种解决方法,会创建不必要的列表初始化,但它可以完成工作。
此外,您将无法自己定义变量类型,但在使用解构声明时会自动完成类型推断。
| 归档时间: |
|
| 查看次数: |
4907 次 |
| 最近记录: |