首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还是val函数参数还是在Kotlin?

还是val函数参数还是在Kotlin?
EN

Stack Overflow用户
提问于 2016-11-12 13:36:26
回答 4查看 25.7K关注 0票数 39

为什么Kotlin删除了在Java中非常有用的最终参数或val函数参数?

代码语言:javascript
复制
fun say(val msg: String = "Hello World") {
    msg = "Hello To Me" // would give an error here since msg is val    
                        //or final
    ...
    ...
    ...
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-12 13:43:28

Kotlin函数参数是最终的。没有val或final关键字,因为这是默认的(不能更改)。

票数 76
EN

Stack Overflow用户

发布于 2017-08-13 09:26:21

在删除了Kotlin M5.1对可变参数的支持之后,可以在可以使用

代码语言:javascript
复制
fun foo(var x: Int) {
  x = 5
}

据Kotlin开发人员说,删除此功能的主要原因如下-

  1. 主要原因是这令人困惑:人们倾向于认为这意味着通过引用传递参数,而我们不支持这个参数(在运行时这是很昂贵的)。
  2. 另一个引起混淆的原因是主构造函数:构造函数声明中的“val”或“var”意味着如果函数声明(即创建属性),则与相同的内容不同。
  3. 而且,我们都知道变异参数不是很好的样式,因此在函数中写入参数的“val”或“var”,也不再允许for-循环的catch块。

汇总-现在所有的参数值都是val。您必须为重新初始化引入单独的变量。例子-

代码语言:javascript
复制
fun say(val msg: String) {
    var tempMsg = msg
    if(yourConditionSatisfy) {
       tempMsg = "Hello To Me"
    }
}
票数 9
EN

Stack Overflow用户

发布于 2020-11-05 14:29:30

另一个原因是val和var只有一个字母不同。这会让人很困惑。因此,对于函数参数,它们完全删除了该选项。这样就消除了这一小区域的混乱(但却把它保存在其他地方

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40563406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档