为什么Kotlin使用" val"代表不变?

时间:2017-09-06 13:07:50

标签: kotlin

我真的想知道为什么Kotlin使用val这个词代表常数?

如果var表示变量。val表示什么? val表示var + lval只是一个单词?

在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

4 个答案:

答案 0 :(得分:6)

val表示value

这是一个只读值。

var是一个可变值

另一方面,

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

答案 1 :(得分:2)

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()   该属性只留下外部"用户"。

的读取权限

答案 2 :(得分:1)

Kotlin的语法灵感来自Scala。在Kotlin中,除了语法之外,还从Scala中获取了一些想法。 Kotlin还自己添加了一些东西,并且做某些事情与Scala完全不同(即,与Scala相比,Kotlin没有隐式转换)。长篇大论:您必须向Scala人询问他们为什么选择关键字组合var和val。

答案 3 :(得分:0)

  • val来自价值。
  • var来自变量。

  • value-为变量,常量或表达式(wiki)分配或计算的数字之类的属性

  • variable-与value关联的符号名称和其关联值可能会更改(维基)