为什么Kotlin删除了在Java中非常有用的final或val函数参数?
fun say(val msg: String = "Hello World") {
msg = "Hello To Me" // would give an error here since msg is val
//or final
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 40
Kotlin函数参数是最终的.没有val或final关键字,因为这是默认值(并且无法更改).
之后科特林M5.1支持可变参数的去除,在早期版本可以使用实现
fun foo(var x: Int) {
x = 5
}
Run Code Online (Sandbox Code Playgroud)
根据 Kotlin 开发人员的说法,删除此功能的主要原因如下 -
主要原因是这令人困惑:人们倾向于认为这意味着通过引用传递参数,我们不支持(在运行时成本很高)。
另一个混淆的来源是主构造函数:构造函数声明中的“val”或“var”意味着与函数声明(即,它创建一个属性)的同一事物不同的东西。
另外,我们都知道变异参数不是一个好的风格,所以在函数中的参数前面写“val”或“var”,for循环的catch块不再被允许。
摘要-val现在所有参数值。您必须引入单独的变量来重新初始化。例子 -
fun say(val msg: String) {
var tempMsg = msg
if(yourConditionSatisfy) {
tempMsg = "Hello To Me"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10669 次 |
| 最近记录: |