-1
これは非常にばかな質問かもしれませんが、私に負担してください: 私の理解と、他のウェブサイトのドキュメントとさまざまな例を読んだ後、guard
ステートメントはブールをチェックします。それが本当であれば、現在のスコープは実行され続けます。そうでない場合は、それがelse
句が実行されます。ここで1は、現在のスコープを終了し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"
を交換する必要がありますtrueの場合、現在のスコープが*」。実行に続けて、それが正しいです。 '名==「ハンス」' * *真であるので、実行は継続され、他の節が実行されません。あなたがそれを記述したのとまったく同じです。 –
guard' 'の意味が混乱している場合、あなたは「確実」や「主張」かであなたの心の中でそれを置き換えることができます「ということを確認してください。」それはあなたがそれを読むべきです。このスコープを継続するには、これが真でなければなりません。 –
Robが言ったことを続けている: "しかし、もしそれが期待されたものでないなら、* else *のステートメントに従って出口のスコープを変えてください" print( "It's Hans")** to ** 'print("それはハンスではありません ")' – Honey