为何 Swift 里常量是 let?

2014-06-22 07:41:19 +08:00
 guoqiao
谁能告诉我这是神马单词的缩写
11303 次点击
所在节点    iDev
37 条回复
snachx
2014-06-22 07:46:27 +08:00
let a =1, 大概就是让a等于1吧…,没啥缩写
casparchen
2014-06-22 07:47:03 +08:00
这难道不是 让 的意思么。让pi这个符号等于3.14
let pi = 3.14 ?
ffffwh
2014-06-22 07:49:07 +08:00
数学课上有没有听过“令x=***”,就是这个let。
这个常量更接近于functional programming的“XX量”,而不是C家族的const。
Zhang
2014-06-22 07:49:44 +08:00
BASIC里面用let定义变量。
limuxy
2014-06-22 07:50:09 +08:00
木有缩写 就是自然语言 (话说这是新语言的趋势吗?越来越接近自然语言?
skybr
2014-06-22 07:50:48 +08:00
就是let的let吧

至于为什么用let, 开个玩笑. 其他像scala的地方已经很多了, 不好意思再用val, 就再从rust那边摘点喽.
WildCat
2014-06-22 07:58:09 +08:00
let
英 [let] 美 [lɛt]
允许,任由; 让,随; 假设; 出租
sanddudu
2014-06-22 08:03:17 +08:00
let it go
shippo7
2014-06-22 08:07:31 +08:00
Swift不再需要定义变量的属性(int,double,char之类的),用let占位置了,同时将代码趋近于自然语言
jsonline
2014-06-22 08:25:11 +08:00
语法还有为什么么?
riaqn
2014-06-22 08:28:50 +08:00
lisp里赋值就是let。
黑客与画家里面说:越是新的语言,就越是接近lisp。
guoqiao
2014-06-22 08:33:18 +08:00
@snachx
@ffffwh

谢谢, 你们的这个说法应该是解答了我的疑问.
guoqiao
2014-06-22 08:42:10 +08:00
把let解释成数学里的"令"固然可以说得通, 但把它和var放在一起对比, 就觉得很不和谐, 类似的定义, 完全不同的语义. 这也是我有点疑惑的原因.
目前来说, swift这门语言给我的感觉, 谈不上很好, 有东拼西凑的感觉, 语法不够精炼, 而且作者对代码的taste并不是很好.
但无论如何, 至少比objc要强不少.
eriale
2014-06-22 09:06:44 +08:00
lisp中给变量赋值就是let。
lisp中表达式第一个符号基本上都是动词,赋值也是表达式,我估摸着为了统一风格,就用let作为赋值表达式的第一个符号。
guoqiao
2014-06-22 09:29:23 +08:00
@eriale 嗯, lisp这种做法自然是很赞的.
但在Swift里, 定义变量是var, 名词.
而到了定义常量, let, 是动词.
况且, let没有一点点定义"常量"的含义在里面, 只是生硬的把别的语言里定义变量的关键词拿过来, 用来定义常量.
这对编程语言的语法优雅与否十分敏感, 所以这个地方让我有点想吐槽.
binux
2014-06-22 09:42:51 +08:00
@guoqiao
如果你这么看:

variable a, b, c;
let d = 1;

variable 不需要赋初值,如果只是声明,没必要用动词。赋初值只是附加功能
let 在有些语言中是就是变量,即使是有些同样有 var 的语言中。只能说就是这么定的,不然你要用

let const d = 1 吗?
binux
2014-06-22 09:43:40 +08:00
更正:
不赋初值需要指定类型
superbear
2014-06-22 10:06:16 +08:00
lua
Perry87
2014-06-22 10:48:38 +08:00
对于强制类型转换,象 Int 转 String ,语法是 String(var) ,当 Optinal String 转 Int 又是 var.ToInt?

另外象 String 和 Array 的计数,一个是用括弧传参数,一个又是用点运算符传消息。
love
2014-06-22 11:14:11 +08:00
let没有值不变的意思吧?为什么不用const呢。

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

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

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

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

© 2021 V2EX