【问题标题】:Swift optional binding constant namesSwift 可选绑定常量名
【发布时间】:2017-03-29 13:35:06
【问题描述】:

我刚刚从 Objective-C 过渡到 Swift,并且一直在为可选绑定编写以下代码,

if let tempX = X {

}

我的问题是我必须经常这样做,以至于每次都需要为常量找到一个新名称。有什么方法可以避免代码中的每个可选 X 都使用新名称 tempX?像这样的东西不工作吗?

if let X = X {

}

【问题讨论】:

标签: swift optional-binding


【解决方案1】:

是的,您可以在此类绑定中重复使用相同的标识符。但请记住,重新定义的、非可选的X 只会在if 范围内可见。

但是如果你使用guard 语句,新的X 可能会隐藏之前的变量(即,如果之前的变量是在另一个作用域中定义的;否则会触发编译器错误)。有人会说这可能会损害您的代码可读性。

如需更多信息,请参阅this related question

【讨论】:

  • 使用guard 可能无法正常工作。这取决于变量是在这个范围内还是在另一个范围内定义的。见stackoverflow.com/a/40353663/1630618
  • @vacawama 好收获!答案改进了;-)
【解决方案2】:

新的常量只在你的 if let 范围内定义,所以一旦范围结束,你的 tempX 就消失了。这也意味着您可以在 if let 范围内重用名称。

if let X = X {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2014-08-06
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多