3
我刚加入一个有很多现有代码的项目。以前的程序员可能对Swift不熟悉,或者在Swift语言的早期阶段开始开发。他们似乎以奇怪的方式使用了if let
声明。他们似乎想要将该陈述用作if is let
。在我编辑的代码,我想知道是否有这方面的任何有效使用:Swift:如果是冗余
// In JSON parser
if value is String, let string = value as? String {
document.createdBy = string
}
首先检查是否值的类型String
似乎是多余的给我。不要在声明的let string = value as? String
部分检查这个问题?
问题
为什么会变成这样需要两次检查?或者会有这个原因吗?
你说得对。这只是愚蠢的。不要模仿它。 (顺便说一下,在你的问题中没有“可选链”)。 – matt
我看不到你需要这样做的情况。如果一个变量是一个'String',你不需要用'as'来强制转换它。字符串“,所以如果变量是一个”字符串“,正确的条件是多余的。如果它不是'String'(因此您想要投射它),则左边的条件返回false,因此绝不会出现。 – Paolo
@matt你是对的。我只是不知道在我的标题中还有什么可以称之为重要的。我更新了我的标题。 –