【发布时间】:2016-07-15 19:37:15
【问题描述】:
我充分了解可选项的使用,知道何时需要使用感叹号解开可选项。为什么保护语句中不需要感叹号?
此代码可以工作并编译,但不使用感叹号:
struct Blog{
var author:String?
var name: String?
}
func blogInfo2(blog:Blog?){
guard let blog = blog else {
print("Blog is nil")
return
}
guard let author = blog.author, name = blog.name else {
print("Author or name is nil")
return
}
print("BLOG:")
print(" Author: \(author)")
print(" name: \(name)")
}
如果您确实输入了感叹号,此代码也可以使用:
struct Blog{
var author:String?
var name: String?
}
func blogInfo2(blog:Blog?){
guard let blog = blog! else {
print("Blog is nil")
return
}
guard let author = blog.author!, name = blog.name! else {
print("Author or name is nil")
return
}
print("BLOG:")
print(" Author: \(author)")
print(" name: \(name)")
}
这是不是有点矛盾,或者有人可以清楚地解释为什么不需要感叹号吗?
【问题讨论】:
-
我很惊讶
guard let blog = blog!版本适合您。你用的是什么版本的 Swift? -
@PhillipMills 是的,现在我在在线快速编译器中尝试后意识到,因为我使用的是 Xcode 8 测试版
标签: ios swift optional forced-unwrapping