为什么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
...
...
...
}
另一个原因是val和var只有一个字母不同。这可能非常令人困惑。因此,对于函数参数,他们完全删除了选项。从而消除了这一小区域的混乱(但仍保留它在其他地方——去图)。
静态编程语言M5.1支持的可变参数删除后,在早期版本中可以使用
fun foo(var x: Int) {
x = 5
}
Kotlin开发人员表示,删除此功能的主要原因如下-
>
另一个混淆的来源是主构造函数:“val”或“var”在构造函数声明中的含义与函数声明(即创建属性)时的含义不同。
此外,我们都知道变异参数不是好的风格,所以在函数中的参数前面写“val”或“var”,不再允许捕获for循环块。
总结-现在所有参数值均为val。您必须引入单独的变量进行重新初始化。示例-
fun say(val msg: String) {
var tempMsg = msg
if(yourConditionSatisfy) {
tempMsg = "Hello To Me"
}
}
Kotlin函数参数为最终参数。没有val或final关键字,因为这是默认值(并且无法更改)。
在这种情况下我们必须使用val而不是var?我知道val是当我们知道值不会改变的时候。但我的印象是var对所有情况都是好的。是真的吗?换句话说:只用var有问题吗?
我有以下课程: 但当我想让name参数在第二个构造函数中不可变时: 我有以下编译时错误: 不允许在辅助构造函数参数上使用Kotlin:“val” 有人能解释为什么Kotlin编译器不允许这样做吗?
我正在创建一个函数,并试图增加声明为整数的参数的值。但它表示,该参数的值不能重新分配。我是一个初学者,如果我缺少一些概念,请告诉我。
我有一个功能:
我是Kotlin的新手,很难理解下面的代码 所以这个函数叫做,它的输入参数是一个名为的函数,它是