みんなで Swift 復習会での談笑用スライド – 4th #minna_de_swift

116 Views

November 12, 16

スライド概要

みんなで Swift 復習会 (http://cswift.connpass.com) の談笑で使った資料です。これを題材に2時間ばかり、集まったみんなと談笑しました。

※ Docswell での公開に移行する直前の Slideshare での閲覧数は 539 でした。

profile-image

正統派趣味人プログラマー。プログラミングとは幼馴染です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

ΈΜͳͰ4XJGU෮शձ $POTUBOUT BOE7BSJBCMFT  ΧδϡΞϧ4XJGUϓϩάϥϛϯά &;/&5‫۽‬୩༑޺ IUUQF[OFUKQ 4XJGU

2.

5IF#BTJDT $POTUBOUTBOE7BSJBCMFT

3.

ఆ਺ͱม਺

4.

ఆ਺ͱม਺ ໊લͷׂΓ౰ͯ ⾣ ԿΒ͔ͷ஋ʹ໊લΛׂΓ౰ͯΔͷʹ࢖͏ ⾣ ໊લΛ͚ͭͯɺͦͷ໊લͰ஋Λѻ͍ͬͯ͘ let p1 = 1299.00 let p2 = 649.00 let p3 = 399.00 let ps = [p1, p2, p3] let m = ps.max()

5.

ఆ਺ͱม਺ ໊લͷׂΓ౰ͯ ⾣ ໊લͰɺͦͷ஋ʹҙਤΛఴ͑ΒΕΔ ⾣ ཧղ͠΍͍͢ɺෆ۩߹Λ‫͍͘ʹ͜͠ى‬ίʔυʹͳΔ let priceOfMacBook = 1299.00 let priceOfIPhone = 649.00 let priceOfAppleWatch = 399.00 let pricesOfProducts = [priceOfIPhone, priceOfMacBook, priceOfAppleWatch] let maxPriceOfProducts = pricesOfProducts.max()

6.

̎छྨͷม਺

7.

̎छྨͷม਺ ෆม஋ม਺ DPOTUBOU ⾣ ஋Λ͍ͬͨΜηοτͨ͠ΒมߋͰ͖ͳ͍ ⾣ MFUͰఆٛ͢Δ let maxCapacity = 100 maxCapacity = 20 DBOOPUBTTJHOUPWBMVFNBY$BQBDJUZJTBMFUDPOTUBOU

8.

̎छྨͷม਺ Մม஋ม਺ WBSJBCMF ⾣ ஋Ληοτ‫ޙ‬ɺҧ͏஋ʹมߋͰ͖Δ ⾣ WBSͰఆٛ͢Δ var amount = 10 amount = 20

9.

̎छྨͷม਺ ίʔυͷಡΈํ let maxCapacity = 100 var amount = 10 ⾣ %FDMBSFBOFXDPOTUBOUDBMMFEANBY$BQBDJUZA BOEHJWFJUBWBMVFPG ⾣ 5IFO EFDMBSFBOFXWBSJBCMFDBMMFEABNPVOUA BOEHJWFJUBOJOJUJBMWBMVFPG

10.

ม਺ͷ࢖͍෼͚

11.

ม਺ͷ࢖͍෼͚ ৗࣝతͳબ୒‫ج‬४ ⾣ letʜ஋͕ܾ·Ε͹มߋ͞Εͳ͍ͱ͖ ⾣ varʜԿ͔ͷ౎౓ɺ஋͕มߋ͞ΕΔͱ͖ struct Cup { let maxCapacity: Int = 100 var amount: Int = 10 mutating var add(amount: Int) {…} mutating var drop(amount: Int) {…} }

12.

ม਺ͷ࢖͍෼͚ ෆม஋ม਺MFU ⾣ ஋Λද‫͢ݱ‬Δ ⾣ ܾΊͨΒʗܾ·ͬͨΒɺมԽ͠ͳ͍ // 引数として渡したい値は、決めたら変わらない let n = currentMonth - startMonth // 算出した結果は、決まったら変わらない let pairOfAnimals = fibonacci(n)

13.

ม਺ͷ࢖͍෼͚ Մม஋ม਺WBS ⾣ ঢ়ଶΛද‫͢ݱ‬Δ ⾣ ঢ়‫گ‬ɾ࣌ؒʹԠͯ͡ɺมԽ͢Δ /// 動物を入れる籠 class Cage { // ケージの中の数は、状況に応じて変わる var numberOfAnimals: Int }

14.

‫ه໌ܕ‪ఆٛ‬‬

15.

ఆٛ‫ه໌ܕ‬ ม਺ఆٛͷ‫ج‬ຊ ⾣ ෆม஋ม਺ͳΒMFUͰఆٛ ⾣ Մม஋ม਺ͳΒWBSͰఆٛ ⾣ ม਺ͷ‫ܕ‬͸ɺ୅ೖ͢Δ஋ʢӈลʣ͔Βྨਪʢ‫ܕ‬ਪ࿦ʣ // 不変値変数なら let で定義 let pi = 3.14 Double 型 // 可変値変数なら var で定義 var attempts = 1 Int 型

16.

ఆٛ‫ه໌ܕ‬ ‫ܕ‬Λ໌‫͢ه‬Δ ⾣ ม਺໊ͷ‫ʹޙ‬ɺͦͷ‫ܕ‬Λ໌‫ه‬Մೳ ⾣ ม਺͕ѻ͏‫ܕ‬Λ໌֬ʢ࣮֬ʣʹࢦఆͰ͖Δ // 明記すれば、確実にその型として扱える let pi: Double = 3.14 Double 型 // 変数の型と値の型が異なれば、エラーで検出可能 let attempt: Int = 1.05 DBOOPUDPOWFSUWBMVFPGUZQF%PVCMF UPTQFDJpFEUZQF*OU

17.

‫ه໌ܕ‬͸໓ଟʹ࢖Θͳ͍ ΄ͱΜͲͷ৔߹ɺॳ‫ظ‬஋Ͱ‫͕ܕ‬ਪ࿦͞ΕΔ

18.

ఆٛ‫ه໌ܕ‬ ίʔυͷಡΈํ let pi: Double = 3.14 ⾣ %FDMBSFBWBSJBCMFDBMMFEAQJA UIBUJTPGUZQF%PVCMF BOEHJWFJUBWBMVFPG ⾣ 5IFQISBTFlPGUZQF%PVCMFz NFBOTlDBOTUPSFBOZ%PVCMFWBMVFz

19.

ఆٛ‫ه໌ܕ‬ ‫ڞ‬มੑΛߟྀͨ͠‫ه໌ܕ‬ ⾣ ͨͱ͑͹ɺ೿ੜΫϥεΛ‫ج‬ఈΫϥεͰѻ͍͍ͨͱ͖ ⾣ ͨͱ͑͹ɺ஋ΛΦϓγϣφϧ‫Ͱܕ‬ѻ͍͍ͨͱ͖ // UILabel を、その継承元の UIView として扱う let view: UIView = UILabel() UIView 型 // 整数値を Int? として扱う var value: Int? = 100 Int? 型

20.

ఆٛ‫ه໌ܕ‬ ϦςϥϧΛߟྀͨ͠‫ه໌ܕ‬ ⾣ Ϧςϥϧ͸ɺ͞·͟·ͳ‫ʹܕ‬୅ೖͰ͖Δ ⾣ ‫ܕ‬Λ໌‫͢ه‬Δ͜ͱͰɺ໨తͷ‫ܕ‬ΛࢦఆՄೳ // 浮動小数点数リテラルを Float 型で扱う let pi: Float = 3.14 代入先が Float なので、Float として扱われる // 明記しなければ、リテラル毎に決められた既定の型 let pi = 3.14 浮動小数点数リテラルの既定の型は Double 型

21.

ఆٛ‫ه໌ܕ‬ ӈลͰͷ‫ه໌ܕ‬ ⾣ ӈลͰ‫ܕ‬Λ໌‫ͯ͠ه‬ɺม਺ͷ‫ܕ‬ਪ࿦Λಋ͘ํ๏ ⾣ ϦςϥϧɺϒϦοδɺμ΢ϯΩϟετɺΦʔόʔϩʔυͰ‫׆‬༂ // 整数リテラルを Double 型として扱う let value = 100 as Double 右辺が Double 型なので、変数の型は Double 型と推論 // アップキャスト let view = NSTextField() as NSView // ブリッジ let string = NSString() as String

22.

஗Ԇॳ‫ظ‬Խ

23.

஗Ԇॳ‫ظ‬Խ ॳ‫ظ‬஋͸ɺ‫Ͱޙ‬ઃఆՄೳ ⾣ ม਺΁ͷɺ஋ͷઃఆ͸ઌૹΓͰ͖Δ w ‫͕ه໌ܕ‬ඞਢʢ஋͔Βͷ‫ܕ‬ਪ࿦͸Ͱ͖ͳ͍ͨΊʣ ⾣ ࢖͏લ·Ͱʹ͸ɺ஋ͷઃఆ͕ඞཁ let maxAttempts: Int if retryingEnabled { maxAttempts = 10 } else { maxAttempts = 1 }

24.

ಉ࣌ఆٛ

25.

ಉ࣌ఆٛ ෳ਺ͷม਺Λಉ࣌ఆٛ ⾣ ม਺ͷछྨ͝ͱʹɺΧϯϚ۠੾ΓͰෳ਺ఆٛͰ͖Δ ⾣ ‫ܕ‬ɺॳ‫ظ‬஋͸ͦΕͧΕʹઃఆͰ͖Δ // 初期値つきで定義(型は推論) let red = 0.5, green = 0.3, blue = 1.0 // 型指定つきで定義(遅延初期化) let red: Double, green: Double, blue: Double // 初期値をつけたり、型をつけたり、推論したり let red = 0.5, green: Double, blue: Double = 1.0

26.

ಉ࣌ఆٛ ม਺ͷ‫ܕ‬Λ·ͱΊͯఆٛ ⾣ ࠷‫͚ͩޙ‬ͷ໌‫Ͱه‬ɺͦΕҎલ΋ಉ͡‫ͳʹܕ‬Δ ⾣ ్தͰ‫ܕ‬Λมߋ͢Δ͜ͱ΋Մೳ // 全て Double 型 let red, green, blue: Double // a だけ Int 型、b と c は Double 型 let a: Int, b, c: Double // 初期値によって型は影響を受ける(初期値優先) let a, b: Int, c = 5, d: Double // 初期値を指定した変数の前は、型明記が必要 let a, b = 5

27.

ಉ࣌ఆٛ λϓϧʹΑΔಉ࣌ఆٛ ⾣ λϓϧͰ΋ಉ࣌ఆ͕ٛՄೳ ⾣ ‫ܕ‬Λ໌‫͢ه‬Δͱ͖͸ɺλϓϧ୯ҐͰߦ͏ // 初期値つきで定義(型は推論) let (red, green, blue) = (0.5, 0.3, 1.0) // 型指定つきで定義(遅延初期化、同時初期化も可) let (red, green, blue): (Double, Double, Double) // よくあるタプルの使い方とは別な印象 let color: (red:Double, green:Double, blue:Double)

28.

ϓϩύςΟʔͰͷఆٛ

29.

ϓϩύςΟʔͰͷఆٛ ม਺ఆٛͱಉ༷ ⾣ ୯ମͰͷఆٛ΋ɺෳ਺ఆٛ΋Մೳ ⾣ ‫ܕ‬΍ॳ‫ظ‬஋΋ࢦఆՄೳ struct Color { var red: Int var green: Int var blue: Int }

30.

ϓϩύςΟʔͰͷఆٛ ॳ‫ظ‬஋Λࢦఆ͢Δ࣌ͷ஫ҙ ⾣ ΠχγϟϥΠβʔ࣮ߦલʹɺॳ‫ظ‬஋͕ઃఆ w ෳ਺ͷJOJUΛ࡞Δͱ͖ʹ஫ҙ w JOJUͰઃఆͯ͠΋lॳ‫ظ‬Խ‫͖ॻ্ʹޙ‬z ⾣ ߏ଄ମͰಛ༗ͷಈ͖ w .FNCFSXJTFJOJU͸ɺॳ‫ظ‬஋Λ࢖Θͳ͍

31.

ΈΜͳͰ4XJGU෮शձ &OEJOH

32.

&OKPZ4XJGU 5IBOLZPV ΈΜͳͰ4XJGU෮शձ $POTUBOUTBOE7BSJBCMFT &;/&5‫۽‬୩༑޺ IUUQF[OFUKQ ⾣ ఆ਺ͱม਺ ⾣ ม਺ͷ࢖͍෼͚ ⾣ ఆٛͱ‫ه໌ܕ‬ ⾣ ஗Ԇॳ‫ظ‬Խ