defer
defer
deferとは?
遅延とは、あらかじめ定義されたように遅延、遅延、遅延を指す.
作成された場所にかかわらず、関数が終了する前に実行される関数で主に使用されます.
これはdefer内部で記述されたコードが関数が終了する前に実行されることを意味する.
deferの使用方法
難しくないです.deferキーワードを使って、括弧の内部を開けて、括弧を閉じて完成しました.
例を見てみましょう。
func f() {
defer { print("First defer") }
print("End of function")
}
f()
// Prints "End of function"
// Prints "First defer"
既存の関数のループであれば、関数fが呼び出される."First defer"
"Second defer"
End of function"
順番に出力すべきだったのですが、deferを使っていたので順番が変わりました.
それ以外にも、他にも特徴があります.
deferは複数回呼び出すこともネストすることもできます.
ストレージ方式がstackと同じだと考えれば、理解しやすいです.
func f() {
defer { print("First defer") }
defer { print("Second defer") }
print("End of function")
}
f()
// Prints "End of function"
// Prints "Second defer"
// Prints "First defer"
最後にdeferが最初に実行されます.最初のdeferは最後に実行されます.
重ね合わせの中でも上と同じです.
一番外側のdeferが最初に実行されます.
一番奥のdeferは最後に実行します.
func f() {
defer {
defer {
print("First defer")
}
print("Second defer")
}
}
f()
// Prints "Second defer"
// Prints "First defer"
関数内部でdefer構文が実行される前に関数が終了した場合、defer構文は実行されません.func f() {
print("End of function")
return
defer { print("First defer") }
defer { print("Second defer") }
}
f()
// Prints "End of function"
戻り値を持つ関数で使用deferを使用すると、返された後にdefer構文が実行されます.
func f() -> String? {
var malrang: String? = "malrang"
defer {
malrang = nil
}
return malrang
}
print(f())
// "malrang"
関数内部でmallangにnilを加えたのに.戻り値は「mallang」
defer構文はreturnの後に実行されます!
Reference
この問題について(defer), 我々は、より多くの情報をここで見つけました https://velog.io/@malrang-malrang/deferテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol