Guard不退出功能

Mar*_*dor -1 guard control-flow swift

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

Ada*_*lon 7

你正在防止名称=="汉斯"的情况

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