Guard不退出功能

时间:2017-07-12 19:59:52

标签: swift guard control-flow

这可能是一个非常愚蠢的问题,但请耐心等待: 根据我的理解,在阅读其他网站上的文档和各种示例后,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"

1 个答案:

答案 0 :(得分:7)

你正在防范姓名==“汉斯”

的情况

将您的反向更改为防护内部,并且打印应替换反向