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

2015-08-10 08:27:34 +08:00
 kalintw
土鳖对此表示不解,如此酸爽?
5735 次点击
所在节点    Swift
57 条回复
qdwang
2015-08-10 08:29:43 +08:00
猜测lz很喜欢js
wangyifei6817
2015-08-10 08:31:06 +08:00
js写多了不适应强类型吧?
kalintw
2015-08-10 08:34:40 +08:00
@qdwang
@wangyifei6817

各位大哥,强类型的C语言也不是这么玩的吧。
Int乘以Double,还非得Double(Int)一下,哎
laucie
2015-08-10 08:35:32 +08:00
@kalintw 同意 C也有自动转换
ipconfiger
2015-08-10 08:49:15 +08:00
没有被自动转换坑过?
zylll520
2015-08-10 08:51:28 +08:00
思路不一样,Swift 倒有点像把大家都约定好的格式全部省略,把隐藏的格式明显标示
publicID001
2015-08-10 08:52:16 +08:00
@kalintw C 是弱类型的
kalintw
2015-08-10 08:52:33 +08:00
@ipconfiger

好吧。。。

那这个捏,更好玩了:
var x: Int = 4
var y: Double = 8.0

// error, 就因为等号左边少了个空格
var c= Double(x) + y

// error, 就因为等号右边少了个空格
var c =Double(x) + y

// pass
var c = Double(x) + y
echo1937
2015-08-10 08:52:38 +08:00
@kalintw 我一直以为:

弱类型、静态类型 : C/C++

http://www.zhihu.com/question/19918532
kalintw
2015-08-10 08:55:03 +08:00
@publicID001
好像C#是强类型的,有没有会C#的,C#中数学运算会自动提升数据类型吗?
ipconfiger
2015-08-10 08:57:21 +08:00
C#中数学运算会自动提升数据类型
kalintw
2015-08-10 09:00:16 +08:00
@ipconfiger
看了 @echo1937 的链接,看来真正的强类型是Swift,其余的都弱爆了
jeremaihloo
2015-08-10 09:02:09 +08:00
C#的类型转换,隐式转换和显示转换
alvin2ye
2015-08-10 09:03:06 +08:00
@kalintw 这是优点好吗
wezzard
2015-08-10 09:08:19 +08:00
不是腦殘設計,是非常好的設計,因爲顯式類型轉換可能會跨越精度,隱式類型轉換基本都是 typealias 或者 literal value。

Swift 是一個講究 code level safety 的語言,不像 C 充分信賴程序員。
FrankFang128
2015-08-10 09:09:44 +08:00
圣战
kalintw
2015-08-10 09:14:03 +08:00
@wezzard
@zylll520

嗯,这些限定的确有很好的引导作用,比如我8楼的例子
morethansean
2015-08-10 09:14:13 +08:00
看到楼上这句 “不是脑残设计,是非常好的设计”,我瞬间觉得什么都说不出。
guotie
2015-08-10 09:18:16 +08:00
真的不是脑残设计,是非常好的设计

go也是这样
jaminzzhang
2015-08-10 09:20:16 +08:00
swift的书上有专门的介绍,可以认真看看书。楼上已经有人回答了,看来LZ真的没有被自动类型转换坑过

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

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

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

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

© 2021 V2EX