Kotlin 中私有集的完整语法结构是什么?
What is the full syntax structure for private set in Kotlin?
我经常使用 代码 A,如下所示。
不幸的是,我无法完全理解 private set
的语法结构,所以当我将 Code A 替换为 时出现以下错误代码 B.
Function invocation 'set(...)' expected
Kotlin 中 private set
的完整语法结构是什么?
代码A
var isRecording by mutableStateOf(false)
private set
代码 B
var isRecording by mutableStateOf(false) private set
这是相关语法,来自https://kotlinlang.org/docs/reference/grammar.html :
propertyDeclaration (used by declaration)
: modifiers? ('val' | 'var') typeParameters?
(receiverType '.')?
(multiVariableDeclaration | variableDeclaration)
typeConstraints?
(('=' expression) | propertyDelegate)? ';'?
((getter? (semi? setter)?) | (setter? (semi? getter)?))
;
propertyDelegate (used by propertyDeclaration)
: 'by' expression
;
我的看法是需要新行,否则它会假定 private set
是 propertyDelegate
中 expression
的一部分。
事实上,实际上可以编写函数 one-liner,其中 private set
是表达式的一部分。这是正确的功能代码:
val set = 0
var isRecording by mutableStateOf(false) private set
public infix fun <A, B> A.private(that: B): A = this
但是我强烈建议永远不要写这样的代码哈哈。
我经常使用 代码 A,如下所示。
不幸的是,我无法完全理解 private set
的语法结构,所以当我将 Code A 替换为 时出现以下错误代码 B.
Function invocation 'set(...)' expected
Kotlin 中 private set
的完整语法结构是什么?
代码A
var isRecording by mutableStateOf(false)
private set
代码 B
var isRecording by mutableStateOf(false) private set
这是相关语法,来自https://kotlinlang.org/docs/reference/grammar.html :
propertyDeclaration (used by declaration)
: modifiers? ('val' | 'var') typeParameters?
(receiverType '.')?
(multiVariableDeclaration | variableDeclaration)
typeConstraints?
(('=' expression) | propertyDelegate)? ';'?
((getter? (semi? setter)?) | (setter? (semi? getter)?))
;
propertyDelegate (used by propertyDeclaration)
: 'by' expression
;
我的看法是需要新行,否则它会假定 private set
是 propertyDelegate
中 expression
的一部分。
事实上,实际上可以编写函数 one-liner,其中 private set
是表达式的一部分。这是正确的功能代码:
val set = 0
var isRecording by mutableStateOf(false) private set
public infix fun <A, B> A.private(that: B): A = this
但是我强烈建议永远不要写这样的代码哈哈。