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

tinyfool 发布于 2014年12月05日
lionlee 等1人欣赏。

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

你怎么看这个问题?

共17条回复
jane4321 回复于 2014年12月05日

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

netdigger 回复于 2014年12月05日

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

nobuta 回复于 2014年12月05日

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

netdigger 回复于 2014年12月05日

3楼 @nobuta 现在很多接口返回值都搞成了optional,怎么解决这个问题?

tinyfool 回复于 2014年12月05日

4楼 @netdigger 按照它那个规则,不搞成optional都不行

peterwang 回复于 2014年12月05日

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

tinyfool 回复于 2014年12月05日

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

peterwang 回复于 2014年12月05日

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

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

webfrogs 回复于 2014年12月05日

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

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

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

nobuta 回复于 2014年12月12日

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

nobuta 回复于 2014年12月12日

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

flyforlove 回复于 2015年02月06日

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

caipanjin 回复于 2015年06月26日

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

牛牛跳水 回复于 2015年06月27日

好事.
近几年流行的语言都带了Option

tinyfool 回复于 2015年06月27日

14楼 @牛牛跳水 哦?都类似么?

牛牛跳水 回复于 2015年06月27日

15楼 @tinyfool 原理类似,都是Some(T)和None.
只是Swift的?语法和!语法更好用

blackzwei 回复于 2015年06月29日

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

swift里也应该类似吧...

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

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]