我真的想知道为什么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
答案 0 :(得分:6)
val
表示value
这是一个只读值。
var
是一个可变值
const
不是100%正确。值PI(3.14 ..)是常数。它的价值永远不变。此行x
中val 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
关联的符号名称和其关联值可能会更改(维基)