这可能是一个非常愚蠢的问题,但请耐心等待:
根据我的理解,在阅读其他网站上的文档和各种示例后,guard
语句会检查一个bool。如果是,则当前范围继续执行。如果不是,则执行else
子句。这里应该使用return
语句来退出当前范围。但这不适合我。
基本上:为什么return
不退出此功能?
class Person {
var name: String
init (name: String) {
self.name = name
}
func reverseNameUnlessItsHans() {
guard name == "Hans" else { //should exit the scope...
print("It's Hans")
return
}
self.name = String(name.characters.reversed()) //...yet this is executed
}
}
var myPerson = Person(name: "Hans")
myPerson.reverseNameUnlessItsHans()
print(myPerson.name) //prints "snaH"
答案 0 :(得分:7)
你正在防范姓名==“汉斯”
的情况将您的反向更改为防护内部,并且打印应替换反向