当前位置: 首页 > 面试题库 >

在Swift的if语句中使用多个let-as

郎魁
2023-03-14
问题内容

我要从字典中解开两个值,在使用它们之前,我必须将它们强制转换并测试正确的类型。这是我想出的:

var latitude : AnyObject! = imageDictionary["latitude"]
var longitude : AnyObject! = imageDictionary["longitude"]

if let latitudeDouble = latitude as? Double  {
   if let longitudeDouble = longitude as? Double {
       // do stuff here
   }
}

但是我想将两个查询打包在一起。这样就可以了:

if let latitudeDouble = latitude as? Double, longitudeDouble = longitude as? Double {
    // do stuff here
}

该语法不起作用,所以我想知道是否有一种漂亮的方法可以做到这一点。


问题答案:

Swift 3更新:

以下内容将在Swift 3中运行:

if let latitudeDouble = latitude as? Double, let longitudeDouble = longitude as? Double {
    // latitudeDouble and longitudeDouble are non-optional in here
}

请务必记住,如果尝试的可选绑定之一失败,if-let则不会执行该块内的代码。

注意:这些子句不必全部都是’let’子句,您可以将任何一系列布尔检查用逗号分隔。

例如:

if let latitudeDouble = latitude as? Double, importantThing == true {
    // latitudeDouble is non-optional in here and importantThing is true
}

Swift 1.2:

Apple可能已经读过您的问题,因为您希望的代码可以在Swift 1.2(今天为beta)中正确编译:

if let latitudeDouble = latitude as? Double, longitudeDouble = longitude as? Double {
    // do stuff here
}

Swift 1.1及更早版本:

这是个好消息-您完全可以做到这一点。两个值的元组上的switch语句可以使用模式匹配将它们都同时转换Double为:

var latitude: Any! = imageDictionary["latitude"]
var longitude: Any! = imageDictionary["longitude"]

switch (latitude, longitude) {
case let (lat as Double, long as Double):
    println("lat: \(lat), long: \(long)")
default:
    println("Couldn't understand latitude or longitude as Double")
}

更新: 此版本的代码现在可以正常工作。



 类似资料:
  • Swift 条件语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 语法 Swift 语言中 if 语句的语法: if boolean_expression { /* 如果布尔表达式为真将执行的语句 */ } 如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。 流程图 实例 i

  • 问题内容: 我已经编写了类似这样的方法。但是我猜这应该进行重构。谁能建议最好的方法来避免使用多个if语句? 我在这里不能使用大小写转换,因为我的“条件”是。 问题答案: 您可以使用来保存您的解决方案: 为了使此代码起作用,您需要像在类中那样进行定义和定义,如下所示:

  • 问题内容: 我只是想知道下面的if语句是否有效: 我的目标是确保同时满足以下2个要求:1. value [6]必须位于目标2.目标中的value [0]或value [1]如果我做了一个不好的例子,请道歉我的问题是,是否可以在一个语句中进行三个AND&OR?非常感谢! 问题答案: 使用 括号 将条件分组: 请注意,如果将定义为一组,则可以在固定时间内进行查找: 并且,正如@Pramod在评论中提到

  • Swift 条件语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 false 时执行。 语法 Swift 语言中 if...else 语句的语法: if boolean_expression { /* 如果布尔表达式为真将执行的语句 */ } else { /* 如果布尔表达式为假将执行的语句 */ } 如果布尔表达式为 true,则执行 if

  • Swift 条件语句 一个 if 语句 后可跟一个可选的 else if...else 语句,else if...else 语句 在测试多个条件语句时是非常有用的。 当你使用 if , else if , else 语句时需要注意以下几点: if 语句后可以有 0 个或 1 个 else,但是如果 有 else if 语句,else 语句需要在 else if 语句之后。 if 语句后可以有 0

  • 问题内容: Swift的这个成语很有道理 但是,我 真正 想要的是 如所写,这不是不正确的,但是这个想法可行吗? 问题答案: Swift 1.2更新 从Swift 1.2开始,允许展开多个可选选项,因此您现在可以编写此代码,如示例所示: 您甚至可以交错条件,例如: 以前在Swift 1.2之前有效 这是在没有难看的强制包扎的情况下的方法: 实际上,它仍然很冗长。 之所以可行,是因为表单的可选类型实