为何 Swift 里常量是 let?

2014-06-22 07:41:19 +08:00
 guoqiao
谁能告诉我这是神马单词的缩写
11303 次点击
所在节点    iDev
37 条回复
hongdengdao
2014-06-22 12:01:24 +08:00
scala党表示很淡定,哈哈
tabris17
2014-06-22 12:13:08 +08:00
@love const只能用常理表达式来初始化

let的意思是该值赋值后不能更改,immutable的意思
ipconfiger
2014-06-22 12:15:27 +08:00
抠字眼有意思么?
notcome
2014-06-22 13:32:15 +08:00
我看不出有何不妥,数学上也是 let sth = expr,只是接下来 sth 没有发生变化罢了
caoz
2014-06-22 14:45:17 +08:00
And God said, "Let there be light," and there was light.
akfish
2014-06-22 14:53:32 +08:00
po主想象力真丰富,居然认为let是缩写

多看点英文版的数学类文献吧。

A Guide to Writing Mathematics
http://www.cs.ucdavis.edu/~amenta/w10/writingman.pdf
见第10页:Defining variables and formulas
lyazure
2014-06-22 14:58:28 +08:00
@guoqiao 你需要rust语言,哈哈, let同样表示赋值后不可变,而定义可变的变量用的是let mut, 其中mut是指mutable可变的。

swift尝试抄各种语言优点于一身,比如rust, haskell, ruby等,这是作者都承认的,但要融合这些语言优点的同时又实现语言设计理念的纯粹和一致性也是不容易的,swift做得还算不错了。

站在llvm和jvm的肩膀上,现在要设计实现一门语言已经很容易了,以后新出现的语言理念会越来越先进,语法也会优美,每个人都能找到自己喜欢的语言的,哈哈
akfish
2014-06-22 15:01:38 +08:00
在数学里,被let定义过后的东西,一般不会再次被定义/赋值,在代码里对应的就是常量。
不要被标题里"defining variables"给迷惑了,数学里关心的是关系/性质,而不是值。所以这是说把一个符号定义为变量,这个符号作为变量的性质在定义过后一直是一个常量。

至于var,当然是variable的缩写。所以let和var的区分并无不妥。
Seita
2014-06-22 16:16:22 +08:00
let 表示命令,命令带有不可更改的意思 XD
lsylsy2
2014-06-22 17:22:42 +08:00
@Zhang 第一反应也是basic
ioth
2014-06-22 17:31:59 +08:00
basic,第一门学习的语言,快30年了。
guoqiao
2014-06-22 17:38:24 +08:00
谢谢各位的解答, 有一些答案很有价值.但总体说来,我对这个问题的结论是:
1. 语言的作者就是拿来主义, 直接从别的语言借鉴了比较常用的let关键字,用以区分var. 无他.
2. var和let摆在一起, 是杂糅的风格, 不和谐, 但也无关痛痒.
3. 一些相关的解释能让它的存在看起来更合理一些,但无法改变Swift拼凑语法的事实.

谢谢楼上各位耐心给出解释的大牛!
guoqiao
2014-06-22 17:39:18 +08:00
@binux 嗯, 这个解释很有深度. 谢谢!
jiang42
2014-06-22 18:20:55 +08:00
haskell 的语法
s51431980
2014-06-23 01:02:47 +08:00
怎么没人提scala中的变量定义是var,常量定义是val(value缩写),这应该满足楼主的和谐

Swift和ObjC都不是优雅的语言,但是赚钱的语言
williamx
2014-07-01 19:55:36 +08:00
Swift 的语法在我看来就是坨大便————但又有什么关系呢?
bushnerd
2020-10-07 00:06:39 +08:00
@akfish 终于明白了,这个回答不错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/118882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX