if-case 模式匹配 - 条件中的变量绑定需要初始化器
if-case pattern matching - Variable binding in a condition requires an initializer
我正在阅读 Big Nerd Ranch 的 Swift 编程书籍(第 2 版),在关于 Switch 语句的章节中,有一小节介绍 in-case 以及如何使用它们。在描述如何实现具有多个条件的 if-case 时,这是书中显示的代码:
...
let age = 25
if case 18...35 = age, age >= 21 {
print("In cool demographic and of drinking age")
}
当我尝试在我的 Xcode playground 中实现这个(完全按照原样)时,我收到一个错误 ("variable binding in a condition requires an initializer")
看来年龄 >= 21 位才是真正的问题,因为这个
let age = 25
if case 18...35 = age{
// Same thing
}
工作正常。我在多条件代码中做错了什么?
I'm working through Big Nerd Ranch's Swift Programming book (2nd
edition) ...
如 the official book web page 所述,该书包括 Swift 版本 3.0 和 Xcode 8.
可能,您正在 Xcode 7.x 或更早版本,在 Swift 2 中,它应该是:
if case 18...35 = age where age >= 21 {
print("In cool demographic and of drinking age")
}
Swift 3:
if case 18...35 = age, age >= 21 {
print("In cool demographic and of drinking age")
}
备注:如果第一个代码片段已经在Xcode8 playground编译,它会报以下编译时错误:
error: expected ',' joining parts of a multi-clause condition
建议将 where
更改为 ,
。
使用可选绑定时应用的相同语法 - 例如 -
Swift 2:
if let unwrappedString = optionalString where unwrappedString == "My String" {
print(unwrappedString)
}
Swift 3:
if let unwrappedString = optionalString, unwrappedString == "My String" {
print(unwrappedString)
}
有关将 where
更改为 ,
的更多信息,您可能需要查看 Restructuring Condition Clauses Proposal。
所以,确保将使用的IDE更新到最新版本(编译Swift 3)。
我正在阅读 Big Nerd Ranch 的 Swift 编程书籍(第 2 版),在关于 Switch 语句的章节中,有一小节介绍 in-case 以及如何使用它们。在描述如何实现具有多个条件的 if-case 时,这是书中显示的代码:
...
let age = 25
if case 18...35 = age, age >= 21 {
print("In cool demographic and of drinking age")
}
当我尝试在我的 Xcode playground 中实现这个(完全按照原样)时,我收到一个错误 ("variable binding in a condition requires an initializer")
看来年龄 >= 21 位才是真正的问题,因为这个
let age = 25
if case 18...35 = age{
// Same thing
}
工作正常。我在多条件代码中做错了什么?
I'm working through Big Nerd Ranch's Swift Programming book (2nd edition) ...
如 the official book web page 所述,该书包括 Swift 版本 3.0 和 Xcode 8.
可能,您正在 Xcode 7.x 或更早版本,在 Swift 2 中,它应该是:
if case 18...35 = age where age >= 21 {
print("In cool demographic and of drinking age")
}
Swift 3:
if case 18...35 = age, age >= 21 {
print("In cool demographic and of drinking age")
}
备注:如果第一个代码片段已经在Xcode8 playground编译,它会报以下编译时错误:
error: expected ',' joining parts of a multi-clause condition
建议将 where
更改为 ,
。
使用可选绑定时应用的相同语法 - 例如 -
Swift 2:
if let unwrappedString = optionalString where unwrappedString == "My String" {
print(unwrappedString)
}
Swift 3:
if let unwrappedString = optionalString, unwrappedString == "My String" {
print(unwrappedString)
}
有关将 where
更改为 ,
的更多信息,您可能需要查看 Restructuring Condition Clauses Proposal。
所以,确保将使用的IDE更新到最新版本(编译Swift 3)。