可选项的全部原因是为了防止因命中分配给nil/null/none的变量而导致的运行时崩溃.因此,变量不能为零; 相反,它们可以包含在一个Optional类型中,该类型将它们表示为Some或None,并解包以获取Some的具体内容,或者为nil.
但是如果你用它们!
或者用Implicitly Unwrapped Optionals 打开它们,你只需要引入运行时崩溃的可能性,因为你是一个不完美的编码器.如果你使用它if let
来安全地打开它们,你可以避免崩溃,但是你被困在if let
语句的范围内以使用Some中的值,你仍然需要处理潜在的nil情况.如果使用?为了调用方法暂时解包,它将在完成后重新包装,引入多层次可选包装的混乱可能性.
所以:在我看来,要做的是避免选项,除非必要时(例如,当调用返回它们的框架方法时).但是,如果我不使用选项,那意味着我的对象引用必须是非零的,我无法弄清楚如何处理由于某种原因不应该存在或者不存在的情况,分配给对象引用的值.
我的问题是:我如何避免需要零?看起来它需要一种不同的编程方法.(或者我应该只使用选项,如果这就是我正在做的,那么除了像其他语言那样简单地对对象引用进行空分配外,它有什么用?)
我知道这可能是一个主观问题,但我还应该问其他问题呢?我不是想哄骗或激起辩论,我真的很想知道正确的方法是什么,因为我写了更多的Swift代码.
我已经写了一些我的第一个重要的Python脚本.我刚读完PEP 8,我了解到lower_case_with_underscores是实例变量名的首选.我一直在使用mixedCase作为变量名,并且我希望我的代码通过将它们更改为lower_case_with_underscores来制作更多Pythonic,如果这就是我们在这里做事的方式.
我可能会编写一些搜索mixedCase的脚本并尝试巧妙地替换它,但在我可能重新发明轮子之前,我的问题是这个解决方案是否已经存在,无论是在精通Python的编辑器中还是作为独立的应用程序; 或者是否有另一种方法可以完成将所有mixedCase变量名转换为lower_case_with_underscores的任务.我已经搜索了一些解决方案,但没有发现任何问题.任何特别会产生这种结果的技术都将受到赞赏.