【问题标题】:Why Kotlin uses the word "val" to stand for constant?为什么 Kotlin 使用“val”这个词来代表常数?
【发布时间】:2018-02-14 23:57:20
【问题描述】:

我很想知道为什么 Kotlin 用 val 这个词来代表常量?

如果var 表示变量。val 表示什么? val 表示var + l 还是val 只是一个词的缩写?

在 Kotlin 文档中,我们只有以下几个字。

只读局部变量使用 val 关键字声明。可变的 局部变量使用 var 关键字声明。

这个问题不仅是为了理解val这个词,还提醒WORD MAKER告诉我们他们为什么给这个词命名,这不是一件小事,这会让我们学习新的更舒服知识,我们想学习并理解一切。

例如,很多人想知道为什么 Swift 使用 let 这个词或为什么 Objective-C 使用 .m 文件扩展名?

我认为官方文档或回复很重要,任何猜测或假设都没有真正的帮助,因为它没有说服力,困惑的人仍然是困惑的。

我也在官方论坛问过这个问题:
https://discuss.kotlinlang.org/t/why-kotlin-use-the-word-val-to-stand-for-constant/4491

一些参考资料:
https://discuss.kotlinlang.org/t/change-val-to-something-else/1180/13

【问题讨论】:

标签: kotlin


【解决方案1】:
  • val 来自价值。
  • var 来自变量。

  • value - 为变量、常量或表达式(wiki)

  • 分配或计算的属性,例如数字
  • variable - 与 value 关联的符号名称,其关联值可能会更改(wiki)

【讨论】:

    【解决方案2】:

    val 表示value

    这是一个只读值。

    var 是一个可变值

    另一方面,const 不是 100% 正确的。值 PI (3.14..) 是一个常数。它的价值永远不会改变。 x 在这一行 val x = random.nextInt() 中的值(希望)总是不同的,但您希望在函数中不要修改该值。所以关键字val 是非常合适的。

    【讨论】:

      【解决方案3】:

      Kotlin 的语法受到 Scala 的启发。在 Kotlin 中,除了语法之外,还有几个想法来自 Scala。 Kotlin 还自己添加了一些东西,并且做某些事情与 Scala 非常不同(即,与 Scala 相比,Kotlin 中没有隐式转换)。长话短说:你必须问 Scala 的人为什么他们选择关键字组合 var 和 val。

      【讨论】:

        【解决方案4】:

        val关键字只有一个字。 val 的缩写在任何地方都找不到。你的问题解释了什么是val

        只读局部变量使用 val 关键字声明。可变的 局部变量使用 var 关键字声明。

        这里有一个网站解释了为什么 val 是只读的而不是不可变的。

        http://blog.danlew.net/2017/05/30/mutable-vals-in-kotlin/

        val 不表示不可变,val 表示只读。这意味着 您不允许显式写入 val,但它不会 保证它们是不可变的

        https://artemzin.com/blog/kotlin-val-does-not-mean-immutable-it-just-means-readonly-yeah/

        Kotlin 允许您声明破坏不变性的 val 的 get() 属性,并且只保留外部“用户”的读取权限。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-03
          • 1970-01-01
          相关资源
          最近更新 更多