I. Languageの
1. The Architecture of Swift
2. Functions
で不明点をまとめる
・Signatureとfullname
Signatureは型を示したもの
(Int, Int) -> Int
voidなら以下
() -> Void or () -> ()
関数のfull name
func echo(string s:String, times n:Int) -> String
を
echo(string:times:)
と書く
func say(_ s:String, times:Int){}
ならfull nameは以下
say(_:times:)
・Void型の省略
1 2 3 4 | //以下は全部一緒 func say1 ( _ s : String ) - > Void { print ( s )} func say2 ( _ s : String ) - > () { print ( s )} func say3 ( _ s : String ) { print ( s )} |
・anonymous
1 2 | let function1 = {() - > () in print ( test2 ) } let function2 = {( finish : Bool ) - > () in print ( finish ) } |
・クロージャーの省略
https://www.isoroot.jp/blog/3000/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //返り値を省略 let function3 = {() in print ( test2 )} let function4 = {( finish : Bool ) in print ( finish ) } function3 () function4 ( true ) //引数を省略 let function5 = { print ( test2 )} function5 () //型を省略。 //これやると何でも値通っちゃうんだけどな・・・・ let function6 = {( finish ) in print ( finish ) } function6 ( true ) function6 ( "aaa" ) //かっこをとる let function7 = { finish in print ( finish ) } function7 ( false ) function7 ( "bbb" ) //$0を使う let function8 = { print ($ 0 ) } function8 ( true ) function8 ( "ccc" ) |
・completionを省略していく
1 2 3 4 5 6 7 8 | UIView . animate ( withDuration : 0.4 , animations : {}, completion : {( finish : Bool ) in print ( "aaa" )}) //引数を使わない場合 UIView . animate ( withDuration : 0.4 , animations : {}, completion : { _ in print ( "aaa" )}) //末尾の引数を外に出す UIView . animate ( withDuration : 0.4 , animations : {}) { _ in print ( "aaa" )} |
・mapでやってみた
1 2 3 4 5 6 7 8 9 10 | let arr = [ 2 , 4 , 6 , 8 ] let arr2 = arr . map ({( i : Int ) - > Int in return i * 2 }) print ( arr ) print ( arr2 ) let arr3 = arr . map ({( i : Int ) - > Int in i * 3 }) print ( arr3 ) let arr4 = arr . map ({ i - > Int in i * 3 }) print ( arr4 ) let arr5 = arr . map ({$ 0 * 3 }) print ( arr5 ) |
・functionを返却
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | func function11 () - > () - > Void { func f () { print ( "function11" ) } return f } function11 ()(); func function12 () - > () - > Void { return { print ( "function12" ) } } function12 ()(); |
・参照渡し
1 2 3 4 5 6 | func aaa ( name s : inout String ) { s = s + "!" } var masterka = "masterka" aaa ( name : & masterka ) |
・@escaping
https://qiita.com/mishimay/items/1232dbfe8208e77ed10e
1 2 3 4 5 6 7 | func funcPasser ( f : @escaping () - > ()) - > () - > () { return f } funcPasser { print ( "funcPasser" ) } |
・capture
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //captureしないと数字があがる var x = 0 let f :()- > () = { print ( x ) } f () //0 x = 1 f () //1 //capture var xx = 0 let ff :()- > () = { [ xx ] in print ( xx ) } ff () //0 xx = 1 ff () //0 |
関連記事:
- iOS 15 Programming Fundamentals with SwiftのI-5とI-6を読んだので不明点をまとめる
- RxSwiftを使ってUISearchBarに入力した文字を取得する
- iOS 15 Programming Fundamentals with SwiftのI-3とI-4を読んだので不明点をまとめる