6日目-21.06.13
学習キーワード
1. Creating basic closures
sweetの複数のタイプを宣言するように、関数タイプを宣言できます.
すなわち、関数を作成して変数に割り当て、関数を呼び出し、パラメータとして他の関数に渡すことができます.
→このように用いられる関数をモジュールと呼ぶ.
let driving: () -> () = {
print("I'm driving in my car")
}
driving()
なぜロッカーを使うのですか?一般的な理由の1つは、機能を保存し、必要に応じて使用することです.
2. Accepting parameters in a closure
モジュールでは、パラメータは受信できますが、受信方法は異なります.
パラメータを取得するには、
{}
カッコにパラメータをリストし、()
キーワードの後にコードを記述します.let driving: (String, Int) -> () = { (name: String, number: Int) in
print("My Car is \(name) - \(number)")
}
driving("Tico", 213)
関数とモジュールの違いの1つは、モジュールを実行するときにパラメータラベルを使用しないことです.モジュール内でのパラメータラベルの使用
外部パラメータ名を指定できません.
エンクロージャにはパラメータ名を指定する必要があります.データ型のみを入力するとエラーが発生します.
モジュールはパラメータタイプを省略できません.
3. Returning values from a closure
モジュールは値を返すことができます.モジュール内の
in
キーワードの前に作成します.let drivingWithReturn: (String) -> String = { (place: String) -> String in
return "I'm going to \(place) in my car"
}
パラメータなしで戻りたい場合はどうすればいいですか?関数と同じ括弧
in
を使用します.// MARK - 매개 변수를 받아들이지 않고 값을 반환
let closurePayment = { () -> Bool in
print("Paying an anonymous person…")
return true
}
func functionPayment() -> Bool {
print("Paying an anonymous person…")
return true
}
4. Closures as parameters
モジュールはタイプのように使用できるので、モジュールをパラメータとして関数に渡すことができます.
モジュールをパラメータとして使用する場合は、非同期処理が便利です.終了時の行動をとることができます.(ネットワークリクエスト、バックグラウンド実行タスクなど)
let driving: () -> Void = {
print("I'm driving in my car")
}
func travel(action: () -> ()) {
print("I'm getting ready to go.")
action()
print("I arrived!")
}
travel(action: driving)
💡 Voidは何も返さないことを示す5. Trailing closure syntax
関数の最後のパラメータがモジュールである場合、swiftは
()
後行モジュール構文と呼ばれる特殊な構文を使用することができる.// MARK - 클로저가 매개변수 마지막인경우
func travel(name: String, action: () -> Void) {
print("I'm getting ready to go.")
action()
print("I arrived!")
print("My \(name)")
}
travel(name: "Taylor") {
print("I'm driving in my car")
}
// MARK - 후행클로저 사용안 한 경우
travel(name: "Taylor", action: {
print("I'm driving in my car")
})
// MARK - 클로저가 매개변수 마지막이 아닌 경우
func travel(action: () -> Void, name: String) {
print("I'm getting ready to go.")
action()
print("I arrived!")
print("My \(name)")
}
travel(action: {
print("I'm driving in my car")
}, name: "Taylor")
trailing closure syntax
を無効にできます.func goCamping(then action: () -> Void) {
print("We're going camping!")
action()
}
goCamping {
print("Sing songs")
print("Put up tent")
print("Attempt to sleep")
}
goCamping(then: {
print("Sing songs")
print("Put up tent")
print("Attempt to sleep")
})
リンク
100 Days of Swift - Day 6 - Hacking with Swift
Reference
この問題について(6日目-21.06.13), 我々は、より多くの情報をここで見つけました https://velog.io/@sookim-1/6일차-21.06.13テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol