斯威夫特预期为零,不是

我的单元测试失败。 它想要nil但得到了 。 我最初的反应是指责我的计算机愚蠢。 您是否期望我提供其他类型的nil ? 只有一个nil ,名字叫nil

但是请稍等。 电脑还不足以欺骗我们。 我做错了什么?

字典问题

这一切都很好,而且是预期的。 我遇到了问题,因为我将值类型设置为“ Any? 而不是Any 。 Swift让我的价值翻倍!

将键设置为nil

在“字典”中将键设置为nil ,它将为您删除该键/值对。 这就是上面第8行的行为符合预期的原因。

如果要在具有可选值类型的Dictionary中将值显式设置为nil ,则必须先将其包装。

当我第一次使用var dict: [String: Any?] = ["first", nil]创建字典时,Swift会自动执行此额外步骤var dict: [String: Any?] = ["first", nil] —它在后台为我包装了nil。

不要这样!

最后,我重构了Dictionary,使其值不使用可选参数。 必须记住的规则越少越好。 如果我对自己的代码感到困惑,那么另一个开发人员加入该怎么办? 如果您想进一步思考这个想法,请查看Tyler Johnson关于代码设计的文章。

代码应该像政治卡通一样呈现自己-充满了直率的隐喻,带有有用的标签,没有任何微妙之处。

肖恩判断 Livefront的 代码是什么样的

Interesting Posts