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

2015 年 8 月 10 日
 kalintw
土鳖对此表示不解,如此酸爽?
6880 次点击
所在节点    Swift
57 条回复
qdwang
2015 年 8 月 10 日
猜测lz很喜欢js
wangyifei6817
2015 年 8 月 10 日
js写多了不适应强类型吧?
kalintw
2015 年 8 月 10 日
@qdwang
@wangyifei6817

各位大哥,强类型的C语言也不是这么玩的吧。
Int乘以Double,还非得Double(Int)一下,哎
cz208209
2015 年 8 月 10 日
@kalintw 同意 C也有自动转换
ipconfiger
2015 年 8 月 10 日
没有被自动转换坑过?
zylll520
2015 年 8 月 10 日
思路不一样,Swift 倒有点像把大家都约定好的格式全部省略,把隐藏的格式明显标示
publicID001
2015 年 8 月 10 日
@kalintw C 是弱类型的
kalintw
2015 年 8 月 10 日
@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 年 8 月 10 日
@kalintw 我一直以为:

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

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

Swift 是一個講究 code level safety 的語言,不像 C 充分信賴程序員。
FrankFang128
2015 年 8 月 10 日
圣战
kalintw
2015 年 8 月 10 日
@wezzard
@zylll520

嗯,这些限定的确有很好的引导作用,比如我8楼的例子
morethansean
2015 年 8 月 10 日
看到楼上这句 “不是脑残设计,是非常好的设计”,我瞬间觉得什么都说不出。
guotie
2015 年 8 月 10 日
真的不是脑残设计,是非常好的设计

go也是这样
jaminzzhang
2015 年 8 月 10 日
swift的书上有专门的介绍,可以认真看看书。楼上已经有人回答了,看来LZ真的没有被自动类型转换坑过

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

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

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

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

© 2021 V2EX