イニシャライザー Part 2.5 #hakataswift

214 Views

December 15, 18

スライド概要

2018/12/15 に「第5回 HAKATA.swift」で発表した資料をアップしました。2018/10/22 に放送した Podcast『イニシャライザー Part 2』 (https://kepc.mookmookradio.com/podcast/53/) でお話しした中から生まれた疑問を、改めてまとめて発表しました。

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

profile-image

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

シェア

またはPlayer版

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

ダウンロード

関連スライド

各ページのテキスト
1.

NPPLNPPLSBEJP ΠχγϟϥΠβʔ1BSU ‫۽‬୩༑޺ !FT@LVNBHBJ ୈճ)","5"TXJGUʙ෱ԬͰ4XJGUͷษ‫ڧ‬ձʙ

2.

‫۽‬୩༑޺ 5PNPIJSP,VNBHBJ ⾣ 4XJGU‫͢Ͱ͖޷͕ޠݴ‬ʂ ⾣ ΈΜͳͰָ͠Ήษ‫ڧ‬ձ͕େ޷͖Ͱ͢ʂ ⾣ ϓϩάϥϛϯάͷָ͠͞Λ఻͍͖͍͑ͯͨɻ w ωοτϥδΦ w ษ‫ڧ‬ձͷ஍ํ։࠵ w ಉਓࢽଈചձ

3.

)","5"TXJGU΁ͷࢀՃ ॳճҎདྷɺ̔ϲ݄ͿΓ

4.

લճ͔Βͷۙ‫گ‬

5.

ٕज़ॻయ̐நબམͪˠ͓ख఻͍ࢀՃ ΞΩόɾεΫΤΞ ΋͘΋ࣥ͘චձͷ‫࠵ڞ‬ͷ ື઒͞Μʹरͬͯ΋Βͬͯ ͓ख఻͍ࢀՃܾఆ ㊗

6.

΋͘΋ࣥ͘චձŠ̍प೥‫ه‬೦ϐΫχοΫ ԣ඿ɾࢁԼެԂ ϐΫχοΫͰ΋ɺࣥච

7.

 88%$!4BO+PTF ʙ ͪΐͬͱ‫ܜٳ‬

8.

4XJGU%BZ!‫ؠ‬ख ୌ୔ࢢ*16Πϊϕʔγϣϯηϯλʔ ֶੜͷ‫ʹؾ׆‬৮Εͨ̍೔ɺՆ

9.

ίϛοΫϚʔέοτ ౦‫ژ‬ϏοάαΠτ ٕज़ऀ૚͸ɺٕज़ॻయʹྲྀΕ͔ͨʜʁ

10.

ٕज़ॻయ̑ ஑ାαϯγϟΠϯγςΟ ৽ఱ஍ɺ஑ାͰ΋େ੝‫گ‬

11.

ٕज़‫ܥ‬ಉਓࢽ ࣗඅग़൛ͱಉਓࢽଈചձ

12.

͘͞ΒγϯσϨϥ ҎདྷɺԠԉத χίχί௒ձٞ ௒ՎͬͯΈͨ̇Ͱ८Γ⁊Θͤͨ ΞΠυϧάϧʔϓ ৽॓ͱळ༿‫Ͱݪ‬೔ ϥΠϒ‫׆‬ಈதͬͯʜ͍͢͝ɻ

13.

͘͞ΒγϯσϨϥೖ໳ ⾣ ΞΠυϧάϧʔϓʢ໊ʣ ⾣ શ‫ۂ‬ΦϦδφϧ ⾣ ౦‫Ͱ఺ڌ̎ژ‬೔‫׆‬ಈத w ৽॓ΞΠυϧεςʔδ w ळ༿‫ݪ‬ΞΠυϧεςʔδ ⾣ ΞΠυϧεςʔδͰ͸ண੮Ͱ‫؍‬ཡ ⾣ Ӧ‫ؒ࣌ۀ‬͸ɺҰൠʹ༦ํ͔Β·Ͱ ⾣ Իָੑॏࢹͷ‫׆‬ಈελΠϧʢʴΞΠυϧੑʣ ⾣ w ϥΠϒεςʔδ͕த৺ w ͔Θ͍Β͔͠͞Βͬ͠ͱΓͨ͠‫Ͱ·͡ײ‬ w ΧϑΣλΠϜ͋ΓɺѲखձ͸‫ج‬ຊͳ͠ ϑΝϯ΁ͷ૝͍ͷਂ͞ɺ‫͍ڧ‬౰ࣄऀҙ͕ࣝҹ৅త ൴ঁͨͪͷඳ͘ੈքʹɺࣗ෼ͷ૝͍ඳ͘ϓϩάϥϛϯάษ‫ڧ‬ձͷlཧ૝z͕ॏͳͬͯ‫͡ײ‬Δ

14.

ࠓ‫ޙ‬ͷ༧ఆ

15.

΋͘΋ࣥ͘චձ ʙٕज़‫ܥ‬ಉਓࢽʗ঎‫ࢽۀ‬ɾൃදࢿྉɾϒϩάʙ ग़ு൛3&7ʙ3&7։࠵ IUUQTUFDICPPLNFFUVQDPOOQBTTDPN Ҏ߱ͷ։࠵༧ఆ ⾣ ˑग़ு൛3&7!ਆాਆอொ ⾣ ˑग़ு൛3&7!ਆాਆอொ ⾣ ˑग़ு൛3&7!౦‫ژ‬໨ࠇ

16.

IUUQLFQDNPPLNPPLSBEJPDPN

17.

NPPLNPPLSBEJP NPPL ‫۽‬୩ͱ៸໘͕ϓϩάϥϛϯάίʔυͷ಺͔Β ௌ͑ͯ͘͜Δ੠ʹࣖΛ܏ָ͚ͯ͠ΉϥδΦ ຖ݄ୈ̎ɾୈ̐ ݄༵೔ ʹ഑৴ IUUQLFQDNPPLNPPLSBEJPDPN ⾣ ୈ࿩  ීஈɺϓϩάϥϜͬͯ࡞Γ·͔͢ʁ ⾣ ୈ࿩  4XJGU%JBHOPTUJDTελΠϧ ⾣ ୈ࿩  ࠶ߟ4XJGU-JOU ⾣ ୈ࿩  ΠχγϟϥΠβʔ1BSU ⾣ ୈ࿩  ٕज़ॻయ̑ɾग़ల‫ه‬೦εϖγϟϧճ ⾣ ୈ࿩  ΠχγϟϥΠβʔ ⾣ ୈ࿩  ٕज़ಉਓࢽͷ࡞Γํ ⾣ ୈ࿩  ίʔσΟϯά‫ن‬໿Λ࡞ͬͯΈ͍ͨͳ

18.

NPPLNPPLSBEJP ΠχγϟϥΠβʔ  4XJGUͷΠχγϟϥΠβʔʹ͍ͭͯ ୈճͱୈճΛ߹Θͤͯ෼΄Ͳ  ΠχγϟϥΠβʔͷ‫ج‬ຊΛ෮श w ͦ΋ͦ΋ΠχγϟϥΠβʔͱ͸ w ΠχγϟϥΠβʔʹ՝ͤΒΕͨ໾ׂ w ‫ܧ‬ঝઌͰΠχγϟϥΠβʔΛ࣮૷ͨ͠ͱ͖ͷ‫ڍ‬ಈ

19.

NPPLNPPLSBEJP ΠχγϟϥΠβʔ ์ૹͰɺ౤͔͚͛ΒΕͨ̎ͭͷٙ໰  0CKFDUJWF$͕བྷΜͩͱ͖ɺ ม਺MFUͷ஋͕ॻ͖‫׵‬ΘΔ͜ͱ͕͋Δ  ೋͭͷؔ਺͕ಉ͡"1*ʹͳΔͱ͖ ͲͪΒͷؔ਺͕‫ݺ‬͹ΕΔͷ͔

20.

NPPLNPPLSBEJP ΠχγϟϥΠβʔ1BSU

21.

ΠχγϟϥΠβʔ1BSU  0CKFDUJWF$͕བྷΜͩͱ͖ɺ  ม਺MFUͷ஋͕ॻ͖‫׵‬ΘΔ͜ͱ͕͋Δ

22.

ม਺MFUͷ͓͞Β͍ ⾣ ม਺ʹ஋Λ୅ೖͰ͖Δͷ͸̍౓͚ͩ ⾣ ࠶୅ೖ͢ΔͱΤϥʔʹͳΔ // 値を書き込んだら let value = 10 // 変更はできない value = 20

23.

ม਺MFUͷ஋͕ มԽ͢ΔྫΛ‫ͯݟ‬Έ·͠ΐ͏

24.

ॻ͖‫׵‬ΘΔཧ༝ ⾣ ‫ݪ‬Ҽ͸DPOWFOJFODFJOJUͷΦʔόʔϩʔυ ⾣ ‫ܧ‬ঝઌͷJOJU͕࠶ͼ‫ݺ‬͹ΕΔՄೳੑΛੜΉ ‫ܧ‬ঝઌͷEFTJHOBUFEJOJU TVQFSJOJU ೿ੜ‫ݩ‬ͷDPOWFOJFODFJOJU TFMGJOJU ‫ܧ‬ঝઌͷEFTJHOBUFEJOJU TVQFSJOJU ೿ੜ‫ݩ‬ͷEFTJHOBUFEJOJU

25.

%FTJHOBUFEJOJU͸̍౓͚ͩ ⾣ 0CKFDUJWF$͸JOJUͷछྨΛఆٛͰ͖ͳ͍ ⾣ 4XJGU͸JOJUͷछྨΛ໌֬ʹͯ͠ɺॳ‫ظ‬ԽͷྲྀΕΛ੍‫͢ޚ‬Δ ‫ܧ‬ঝઌͷEFTJHOBUFEJOJU TVQFSJOJU ೿ੜ‫ݩ‬ͷDPOWFOJFODFJOJU TFMGJOJU JOJUJBMJ[FSEPFTOPUPWFSSJEFBEFTJHOBUFEJOJUJBMJ[FS GSPNJUTTVQFSDMBTT ‫ܧ‬ঝઌͷEFTJHOBUFEJOJU TVQFSJOJU ೿ੜ‫ݩ‬ͷEFTJHOBUFEJOJU

26.

ΠχγϟϥΠβʔ1BSU  ೋͭͷؔ਺͕ಉ͡"1*ʹͳΔͱ͖  ͲͪΒͷؔ਺͕‫ݺ‬͹ΕΔͷ͔

27.

ಉ͡"1*ͰҟͳΔؔ਺ͱ͸ ⾣ ยํ͸ɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ ยํ͸ɺҾ਺ͳ͠ struct Value { init(v: Int = 7) init() } ͲͪΒͱ΋init()Ͱ‫ͼݺ‬ग़ͤΔ

28.

ͳΜ͔ɺ͋Ϳͳͦ͏ʁ

29.

໰୊

30.

લఏ ‫ط‬ఆ஋͖ͭͷ΋ͷ͚ͩͳΒɺͦΕ͕‫ݺ‬͹ΕΔ ⾣ ยํ͸ɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ ยํ͸ɺҾ਺ͳ͠ struct Value { init(v: Int = 7) } Value() // init(v:) が呼ばれる

31.

Q1.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ยํ͸ɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ ยํ͸ɺҾ਺ͳ͠ struct Value { init(v: Int = 7) init() }

32.

A1.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ยํ͸ɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ ยํ͸ɺҾ਺ͳ͠ struct Value { init(v: Int = 7) init() }

33.

Q2.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ‫ܕ‬ͷఆٛͰɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ ‫ܕ‬ͷ֦ுͰɺҾ਺ͳ͠ struct Value { init(v: Int = 7) } extension Value { init() }

34.

A2.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ‫ܕ‬ͷఆٛͰɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ ‫ܕ‬ͷ֦ுͰɺҾ਺ͳ͠ struct Value { init(v: Int = 7) } extension Value { init() }

35.

Q3.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ͦΕͧΕΛผϑΝΠϧʹ‫ࡌه‬ ⾣ "QQ%FMFHBUFͰinit()Λ࣮ߦ struct Value { init(v: Int = 7) } extension Value { init() }

36.

A3.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ͦΕͧΕΛผϑΝΠϧʹ‫ࡌه‬ ⾣ "QQ%FMFHBUFͰinit()Λ࣮ߦ struct Value { init(v: Int = 7) } extension Value { init() }

37.

໰୊ ʙ্‫ڃ‬ฤʙ

38.

લఏ ϞδϡʔϧΛ௒͑ͨΦʔόʔϩʔυ ⾣ Ϟδϡʔϧ%FpOFʹ‫ܕ‬ͷఆٛɺ‫ط‬ఆ஋͖ͭͷҾ਺͋Γ ⾣ Ϟδϡʔϧ&YUFOEʹ‫ܕ‬ͷ֦ுɺҾ਺ͳ͠ Define.framework Extend.framework public struct Value { import Define public init(v: Int = 7) public extension Value { } public init() }

39.

Q4.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ "QQ%FMFHBUFͰ%FpOFͱ&YUFOEΛΠϯϙʔτ ⾣ "QQ%FMFHBUF಺Ͱinit()Λ࣮ߦ AppDelegate import Define import Extend class AppDelegate: NSObject, NSApplicationDelegate { func applicationDidFinishLaunching(_ n: Notification) { Value()

40.

Q5.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ 4໰୊ͷίʔυ͸ͦͷ·· ⾣ 7JFX$POUSPMMFSͰ%FpOF͚ͩΛΠϯϙʔτͯ͠init()Λ࣮ߦ ViewController import Define class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() Value()

41.

Q6.JOJU ͲͪΒ͕‫ͼݺ‬ग़͞ΕΔʁ ⾣ ໰୊ͷίʔυ͸ͦͷ·· ⾣ "QQ%FMFHBUFͷ&YUFOEͷΠϯϙʔτΛ࡟আͯ͠init()Λ࣮ߦ ViewController import Define import Extend class AppDelegate: NSObject, NSApplicationDelegate { func applicationDidFinishLaunching(_ n: Notification) { Value()

42.

IUUQLFQDNPPLNPPLSBEJPDPN

43.

&OKPZ4XJGU 5IBOLZPV ‫۽‬୩༑޺ !FT@LVNBHBJ