OC

Knowledge OS
主帖 17 条回复

你觉得Swift里面的Optional类型是好事儿还是坏事儿?

tinyfool tinyfool · 2014年12月05日 · 阅读 5 · lionlee 等0人欣赏。

Ok,它很安全,不会出现nil,问题是nil真的有这么可怕么?一用问号,代码后面都要用问号或者惊叹号,带来的繁琐是不是更麻烦呢?

你怎么看这个问题?

回复

17 条
#1
jane4321
2014年12月05日

我也一直不理解为什么要用这个Optional。

#2
netdigger
2014年12月05日

不是好事儿。想做的完美,可惜就是没有考虑过用得人的感觉。

#3
nobuta
2014年12月05日

个人非常讨厌optional这种东西,一般有点经验的人都会自己检查nil的吧,没必要这样搞,反而觉得很麻烦

#6
peterwang
2014年12月05日

写一段代码比较一下使用 Optional 和 不用 Optional 显式写 nil 判断,应该就很清楚了。Optional 的 composability 更好吧。

#7
tinyfool
2014年12月05日

6楼 @peterwang 这个倒是无所谓,但是带来的每行代码里面都有问号或者惊叹号,好令人困扰啊

#8
peterwang
2014年12月05日

@tinyfool 这个 Optional type 是借鉴自 Haskell 的 Maybe,你有兴趣的话可以看看在 Haskell 中 Maybe [1] 是如何改进代码的可读性和可组合性的,我觉得背后的动机是一样的。

[1] http://book.realworldhaskell.org/read/monads.html

#9
webfrogs
2014年12月05日

就近几个月的 swift 使用上来说,我觉得是好事。

不过 optional 也会带来坑,比如对值为 nil 的optional 值使用强制解包的 ! 操作符会导致程序 crash。特别是对 swift 还不熟悉的新手来说经常范这样的错误。

总的来说,感觉 swift 写起来的爽快程度要比 objc 好很多。

#10
nobuta
2014年12月12日

4楼 @netdigger 官方接口返回optional的话,你只有老老实实检查咯,自己写接口还是应该遵循规则可能为空老老实实返回optional,哈哈,虽然很烦

#11
nobuta
2014年12月12日

protocol里的option接口也得用感叹号来调用,扯

#12
flyforlove
2015年02月06日

看了半天,最终还是觉得是扯淡的设计。 感觉只有在链式调用的时候,还简洁点儿。

#13
caipanjin
2015年06月26日

Java 8里面也加入了Optional. 至于为什么要用这个,代码写多了就知道了。

#17
blackzwei
2015年06月29日

和scala的Option[T]类似的吧? 不只是空检查的替代 这个玩意儿是可组合的 有map foreach等等方法 那就不用像以前那样写一堆的if了... 而且还可以用模式匹配

swift里也应该类似吧...

本帖有17个回复,因为您没有注册或者登录本站,所以只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。
登录 或者 注册
顶楼 / 底楼 / 首页