斯威夫特预期为零,不是
我的单元测试失败。 它想要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的 代码是什么样的 。