对于数学运算 Swfit 不自动提升和转换类型,这难道不是脑残的设计?

2015-08-10 08:27:34 +08:00
 kalintw
土鳖对此表示不解,如此酸爽?
5766 次点击
所在节点    Swift
57 条回复
magicyu1986
2015-08-10 11:46:32 +08:00
对多语言技能的人来讲,确实是个坑...
bleaker
2015-08-10 11:48:56 +08:00
强类型 - 弱类型
静态类型 - 动态类型

这两组概念还是有一些不同的
ipconfiger
2015-08-10 12:13:43 +08:00
@kalintw 习惯的力量是巨大的
chmlai
2015-08-10 12:17:45 +08:00
@kalintw Python/Ruby 和 Swift 设计目标就不一样.
jiang42
2015-08-10 12:22:39 +08:00
@kalintw 符合直觉。说的直白点,小白觉得好用。

语言设计本身就是无数个tradeoff,完全看语言设计者的决策。你只提到了Ruby,Python,为什么不去看看Haskell和Ocaml呢。

当1.0+1!=2的时候你会感谢显式类型转换的
Shy07
2015-08-10 14:13:30 +08:00
Swift 和 Python 不清楚,但是 Ruby 是强类型的,Ruby 的变量是“Duck Type”,隐式转换的前提是对象存在 to_s, to_i 这类转换方法。
eg:
a = 10086
puts a # 打印的不是 a 本身的对象,而是 a.to_s 返回的对象,隐式转换
a = "10086" # 为什么可以改变 a 的类型?Ruby 的变量是动态类型
puts a == 10086 # => false,为什么?因为 a 是 String,10086 是 Fixnum,强类型
puts 10087 == a.to_i + 1 # => true,显示转换类型,为什么支持调用 to_i ?Duck Type
puts 10087 == a + 1 # => no implicit conversion of Fixnum into String (TypeError)

如果想要看到
document.write('10086' == 10086); // => true
这类代码,我建议还是继续 JS 大法好吧
jiang42
2015-08-10 14:22:53 +08:00
@Shy07 所以说,不要用强弱类型这种没有明确定义的词……从这个意义上来说,Python也是强类型的,只不过带了隐式类型转换
Exin
2015-08-10 19:26:10 +08:00
不懂。但我知道凡是有人说Apple的东西不好的地方,肯定有人洗地。
Shy07
2015-08-10 19:33:34 +08:00
@jiang42 Python 确实是强类型的 https://en.wikipedia.org/wiki/Python_(programming_language)
所谓强类型就是不同的类型操作之前需要进行强制转换,强制转换可以是显式的,也可以是隐式的
jiang42
2015-08-10 19:45:33 +08:00
@Shy07 我不相信维基百科,请给论文。按照你的定义,有哪个语言是弱类型的呢?

BTW,在维基百科type system条目里说了,强弱类型没有通用定义
jiang42
2015-08-10 19:46:02 +08:00
@Exin 看问题带偏见不是一个好习惯
Exin
2015-08-10 20:18:30 +08:00
@jiang42 什么问题?我根本没看到问题
rotoava
2015-08-10 21:11:45 +08:00
很讨厌swift。现在对swift的修饰一般说是现代化的编程语言,将来一定替换掉oc,支持函数式风格,苹果帝国支持野心勃勃等。想到python很多人只用一个词修饰-优雅。swift是和优雅不沾边的。太多的地方隐形表示,有些地方反而偏偏要显性表示。还有,尾参,外参、内参,尾参闭包组合起来,一个函数调用就有10种形式,呵呵。闭包定义方式也丑的不行,中间还夹杂一个in,函数都匿名了,加个in多丑。另外一版二版的一些改动就像开玩笑。
wezzard
2015-08-10 21:19:21 +08:00
這麼多人說 Python 好,我也去學個看看。
rotoava
2015-08-10 21:30:24 +08:00
被自动类型转化坑过有什么好讲的。不管是否支持自动类型转换,当存在危险的时候你都得有意识注意一下。当你意识一下之后,发现不要紧,且是支持自动类型转换的。所以省事了,直接开心写下一行。难道不是这个思路过程。
jimages
2015-08-10 23:14:51 +08:00
@ibremn py3 赋值试过不加空格 没问题啊
DingSoung
2015-09-29 13:10:07 +08:00
LZ 是没被 C 坑过

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

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

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

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

© 2021 V2EX