_Function Builders in Swift #love_swift

305 Views

April 28, 20

スライド概要

2020/4/28 の Swift 愛好会で「_Function Builders」についての話したときに使った資料をアップしました。この機能は発展途上中で、今回は Swift 5.2 の時点での Function Builders を試行錯誤で試したときのお話になります。

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

profile-image

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

シェア

またはPlayer版

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

ダウンロード

関連スライド

各ページのテキスト
1.

@ 'VODUJPO#VJMEFST JO4XJGU ‫۽‬୩༑޺ !FT@LVNBHBJ ू·Ε4XJGU޷͖ʂ4XJGUѪ޷ձWPM!ΦϯϥΠϯ

2.

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

3.

 ೥ ࠓ೥͸‫׆‬ಈ࠶։ ͷ‫ػ‬ӡ ͩͬͨ͸ͣͳͷͰ͚͢ΕͲ΋ɻ

4.

ۙ‫׆گ‬ಈ લճͷ4XJGU%BZT'VLVPLB ͋ͨΓҎ߱Λத৺ʹ঺հ

5.

ษ‫ڧ‬ձͷ౦‫֎ژ‬։࠵ ΈΜͳͰ4XJGU෮शձ(0   JOࡳຈr  TU⒌ JO‫ؠ‬खr  UI⒌ 4XJGU%BZ  JOԭೄr  OE⒌ 4XJGU%BZ  JOࡳຈr UI⒌ NJOJ JOઋ୆r  SE⒌ JO෱Ԭr TU⒌ JO෱Ԭr  UI⒌ 4XJGU%BZ  JO෱Ԭr  UI⒌  JO‫౎ژ‬r  UI⒌ JO௕໺r  UI⒌ XJUI/4&( JO෱Ԭr  UI⒌ தࢭ  JOࡳຈr UI⒌⒌ NJOJ ࠶ձ  JO෱Ԭr OE⒌⒌ 4XJGU%BZT 

6.

ษ‫ڧ‬ձͷ౦‫֎ژ‬։࠵ ΈΜͳͰ4XJGU෮शձ(0 ˞͜ͷ࣌͝ੈͰ͢͠ɺ࣍ճ։࠵͸ະఆ

7.

ಉਓࢽଈചձ ٕज़ॻయ̔

8.

ಉਓࢽଈചձ ٕज़ॻయ̔ ˞͜ͷ࣌͝ੈʹΑΓɺ։࠵தࢭ

9.

ٕज़ಉਓࢽ ΋͘΋ࣥ͘චձ ΋͘΋ࣥ͘චձ ʙٕज़‫ܥ‬ಉਓࢽʗ঎‫ࢽۀ‬ɾൃදࢿྉɾϒϩάʙ IUUQTUFDICPPLNFFUVQDPOOQBTTDPN

10.

ٕज़ಉਓࢽ ΋͘΋ࣥ͘චձ ˞͜ͷ࣌͝ੈʹΑΓɺ݄̓·Ͱ։࠵‫ࢭٳ‬த ΋͘΋ࣥ͘චձ ʙٕज़‫ܥ‬ಉਓࢽʗ঎‫ࢽۀ‬ɾൃදࢿྉɾϒϩάʙ IUUQTUFDICPPLNFFUVQDPOOQBTTDPN

11.

ωοτϥδΦ ‫۽‬୩ͱ៸໘͕ϓϩάϥϛϯάίʔυͷ಺͔Β ௌ͑ͯ͘͜Δ੠ʹࣖΛ܏ָ͚ͯ͠ΉϥδΦ ⾣ ୈ࿩ ίʔυϨϏϡʔͷҙٛΛ͔Έ͠ΊΔ ⾣ ୈ࿩ ྲྀసͷٕज़ಉਓࢽଈചձͱษ‫ڧ‬ձ ⾣ ୈ࿩ ࡾ߲ԋࢉࢠ ⾣ ୈ࿩ 5FDI-5ɺ੒ޭ΁ͷ  ͭͷλω ⾣ ୈ࿩ 04ͷΞοϓσʔτରԠͷ෣୆ཪ ⾣ ୈ࿩ ٕज़ಉਓࢽɺϓϩάϥϛϯάͷ͋Δ೔ৗ ⾣ ୈ࿩ ͱ͖Ί͍ٕͨज़ॻ

12.

ωοτϥδΦ ‫۽‬୩ͱ៸໘͕ϓϩάϥϛϯάίʔυͷ಺͔Β ௌ͑ͯ͘͜Δ੠ʹࣖΛ܏ָ͚ͯ͠ΉϥδΦ ˞ؔ܎ऀ֤Ґͷ‫ڥ؀‬มԽʹΑΓɺ഑৴ऴྃ ⾣ ୈ࿩ ίʔυϨϏϡʔͷҙٛΛ͔Έ͠ΊΔ ⾣ ୈ࿩ ྲྀసͷٕज़ಉਓࢽଈചձͱษ‫ڧ‬ձ ⾣ ୈ࿩ ࡾ߲ԋࢉࢠ ⾣ ୈ࿩ 5FDI-5ɺ੒ޭ΁ͷ  ͭͷλω ⾣ ୈ࿩ 04ͷΞοϓσʔτରԠͷ෣୆ཪ ⾣ ୈ࿩ ٕज़ಉਓࢽɺϓϩάϥϛϯάͷ͋Δ೔ৗ ⾣ ୈ࿩ ͱ͖Ί͍ٕͨज़ॻ

13.

ษ‫ڧ‬ձ ஌Γ߹͍গਓ਺͚ͩͰͷษ‫ڧ‬ձ ͜ͷ࣌͝ੈͰ͢͠ ෆಛఆଟ਺ɺີۭؒΛආ͚ͯ։࠵

14.

ษ‫ڧ‬ձ ஌Γ߹͍গਓ਺͚ͩͰͷษ‫ڧ‬ձ ˞‫ࣄٸۓ‬ଶએ‫ʹྩൃݴ‬ΑΓɺࣗॗ ͜ͷ࣌͝ੈͰ͢͠ ෆಛఆଟ਺ɺີۭؒΛආ͚ͯ։࠵

15.

ͭ͡ʹɺ͜·ͬͨɻ

16.

-*/&-*7& ͸͡ΊͯΈ·ͨ͠ɻ

17.

͜ͷࠒͷؔ৺Ͳ͜Ζ Šू·ΕΔ৔ॴͷେ੾͞Š

18.

੍࡞෺

19.

ಉਓࢽ ٕज़ಉਓࢽ w w w w w w 4XJGUΠχγϟϥΠβʔେશ +BWB4DSJQU$PSFͰ༡΅͏ 4XJGUΒ͍͠ද‫ݱ‬Λ໨ࢦͦ͏ 1SPUPDPM0SJFOUFE*OUFHFSTʹ ૝͏δΣωϦοΫϓϩάϥϛϯάͷະདྷ ϓϩάϥϚʔͷͨΊͷ ৽ઍࡀۭߓೖ໳ J04$POJO-POEPOೖ໳ IUUQTF[OFUKQCPPL

20.

ษ‫ڧ‬ձΛָ͠ΉΞϓϦ $PEF1JFDFGPSNBD04 ιʔείʔυΛ5XJUUFSͱ(JTUʹಉ࣌౤ߘͰ͖Δ ษ‫ڧ‬ձͰ஌‫ݟ‬ΛΈΜͳͱ‫ڞ‬༗͍ͨ࣌͠ͱ͔ʹศརʂ

21.

'VODUJPO#VJMEFST ؔ਺Ϗϧμʔ

22.

'VODUJPO#VJMEFST ֓ཁ  %4-ΛຒΊࠐΉ࢓૊Έ  ม‫ن׵‬ଇΛؔ਺Ϗϧμʔ‫Ͱܕ‬ఆٛ  ؔ਺ϏϧμʔଐੑΛ෇༩ͨ͠ϒϩοΫ಺Ͱ%4-Λ‫ه‬ड़  தؒ‫ޠݴ‬4*-ੜ੒࣌ʹຒΊࠐ·ΕΔ  w w ม‫ߏػ׵‬ΛϥϯλΠϜʹ͸࣋ͪӽ͞ͳ͍ ੩తϝιουͱ‫ܕ‬γεςϜͰม‫׵‬ ‫ࡏݱ‬ɺൃల్্

23.
[beta]
'VODUJPO#VJMEFST

ීஈͷίʔυͷॻ͖ํ
func serialization() -> String {
var serialized = ""
serialized += String(SerializedValue(turn: turn))
serialized += "\n"
serialized += String(SerializedValue(board: board))
serialized += "\n"
}

return serialized

24.

'VODUJPO#VJMEFST ؔ਺ϏϧμʔΛఏ‫͖ͱͨ͠ڙ‬ @Serialization func serialization() -> String { } turn board

25.

'VODUJPO#VJMEFST %4 ໨తʹಛԽͨ͠ίϯϐϡʔλʔ‫ޠݴ‬ w w ಛఆͷ໨తୡ੒͚ͩΛ૝ఆ ൚༻ੑ͕ͳ͍୅ΘΓʹѻ͍΍͍͢  ฼ମͷ‫͕͋ޠݴ‬Δ৔߹͸ʮ૊ΈࠐΈ%4-ʯͱ‫ݺ‬͹ΕΔ  ઃ‫ܭ‬໨ඪ w w w ൚༻ੑɾแ‫ׅ‬ੑ͸ඞཁͳ͍ ‫ه‬ड़Λද‫͠ݱ‬΍͍͢΋ͷʹ͢Δ ৑௕ੑɾखଓ͖͸࠷খ‫͢ʹݶ‬Δ

26.

'VODUJPO#VJMEFST ؔ਺Ϗϧμʔ‫ܕ‬  ‫ܕ‬ͷఆٛ࣌ʹ!@GVODUJPO#VJMEFSଐੑΛఴ͑Δ  ؔ਺ߏஙϝιουͰม‫ن׵‬ଇΛ࣮૷͢Δ  ੩తϝιου͚ͩͰ࣮૷͢Δ @_functionBuilder enum Sample { // ؔ਺ߏஙϝιουΛ࣮૷ }

27.

'VODUJPO#VJMEFST ؔ਺Ϗϧμʔଐੑ  ؔ਺ɺҾ਺ɺ‫ܕࢉܭ‬ϓϩύςΟʔɺఴࣈߏจͰ࢖͑Δ  ‫ܕࢉܭ‬ϓϩύςΟʔͱఴࣈߏจ͸ɺήολʔͰޮྗΛൃ‫ش‬  ੩తϝϯόʔͰ΋ར༻Մೳ @Sample func execute() -> Component { init(@Sample body:()->Component) { // DSL Ͱ‫ࡌه‬ // DSL Ͱ‫ࡌه‬ } }

28.

'VODUJPO#VJMEFST ؔ਺ߏஙϝιου  ؔ਺ຊମΛੜ੒͢Δͷʹ࢖༻  ؔ਺Ϗϧμʔ‫ʹܕ‬TUBUJDGVODͰఆٛ w w ༻్ʹԠͯ͡ϝιουॺ໊͕‫ن‬ఆ͞Ε͍ͯΔ Φʔόʔϩʔυ͕ར༻Մೳ

29.

'VODUJPO#VJMEFST ༻ҙ͞Ε͍ͯΔϝιου 1. buildExpression(_: Expression) -> Component w w w w w w ϒϩοΫ಺ͷ֤ධՁࣜΛม‫׵‬ ೖΕࢠʹͳ͍ͬͯΔϒϩοΫ಺ͷධՁࣜ΋ର৅ 2. buildBlock(_: Component ...) -> Component ϒϩοΫ಺ʹ͓͚Δ֤ධՁࣜͷม‫݁׵‬ՌΛ݁߹ ೖΕࢠͷϒϩοΫΛઌʹධՁ 3. buildDo(_: Component ...) -> Component EPϒϩοΫͷม‫݁׵‬ՌΛ݁߹͢Δͷʹ࢖͏ CVJME#MPDLͷ݁Ռ͕͚̍ͭͩ౉ͬͯ͘Δ༷ࢠ

30.

'VODUJPO#VJMEFST ༻ҙ͞Ε͍ͯΔϝιου  buildEither(first: Component) -> Component ̎ͭҎ্ͷπϦʔͰ࠷ॳͷଆͷ݁ՌΛੜ੒  buildEither(second: Component) -> Component ̎ͭҎ্ͷπϦʔͰ࣍ͷଆͷ݁ՌΛੜ੒

31.

'VODUJPO#VJMEFST ଘࡏෆ໌ͳϝιου  buildFunction(_: Components...) -> Return ؔ਺ͷτοϓϨϕϧͰม‫݁׵‬ՌΛ݁߹͢Δͷʹ࢖͏Β͍͠ʁ  buildOptional(_: Component?) -> Component ΦϓγϣφϧͳαϒϒϩοΫ͔Β݁ՌΛऔಘ͢Δͷʹ࢖͏ʁ

32.

5SBOTGPSNBUJPO ؔ਺Ϗϧμʔͷม‫ن׵‬ଇ

33.

5SBOTGPSNBUJPO ϒϩοΫͱධՁࣜ   ϒϩοΫ಺ͷ֤ධՁࣜΛ࿈ଓతʹม‫׵‬ w w w CVJME&YQSFTTJPO͕͋Ε͹ม‫׵‬ɺͳ͚Ε͹ແม‫׵‬ CVJME%P͕͋Ε͹ɺEPߏจΛධՁࣜͱͯ͠ѻ͑Δ CVJME&JUIFS͕͋Ε͹ɺJGߏจΛධՁࣜͱͯ͠ѻ͑Δ ม‫֤ͨ͠׵‬ධՁࣜͷ݁ՌΛ݁߹ w CVJME#MPDLϝιουͰ֤ධՁࣜͷ݁ՌΛ݁߹

34.

5SBOTGPSNBUJPO ม਺ͷએ‫ͱݴ‬୅ೖ  ࠓͷͱ͜Ζ͸࢖͑ͳ͍ʁ w w ϒϩοΫ಺ͰͷɺϩʔΧϧม਺ͷએ‫ݴ‬ ϒϩοΫ಺Ͱͷɺม਺΁ͷ஋ͷ୅ೖ

35.

5SBOTGPSNBUJPO ৚݅෼‫ͱذ‬ΤϥʔϋϯυϦϯά  ৚݅෼‫ذ‬ w w w  CVJME&JUIFS͕͋Ε͹ɺJGߏจΛධՁࣜͱͯ͠ѻ͑Δ TFMFDUจ͸·ͩ࢖͑ͳ͍ʁ CVJME0QUJPOBM͸·ͩ࢖͑ͳ͍ʁ ΤϥʔϋϯυϦϯά  UISPXεςʔτϝϯτ͸·ͩ࢖͑ͳ͍ʁ  EFGFSεςʔτϝϯτ͸·ͩ࢖͑ͳ͍ʁ  DBUDIΛ൐͏EPεςʔτϝϯτ͸ɺ࢖͑ͳ͍ʁ

36.

CVJME#MPDL ϒϩοΫ಺ͷධՁࣜΛଋͶͯ݁ՌΛಋ͘ ධՁࣜ ධՁࣜ ϒϩοΫͷ݁Ռ ộ ධՁࣜ

37.

CVJME#MPDL ཁॴ  ϒϩοΫ಺ͷ֤ධՁࣜͷ஋ΛଋͶͯม‫׵‬  ධՁࣜͷ‫਺ݸ‬΍໭Γ஋ͷ‫ʹܕ‬Ԡͯ͡ΦʔόʔϩʔυՄೳ  ࠷্ҐϒϩοΫͷ৔߹ɺ ߏஙϝιουͷ໭Γ஋͕ɺؔ਺ͷ໭Γ஋ͱͳΔ  ೖΕࢠϒϩοΫͷ৔߹ɺ ߏஙϝιουͷ໭Γ஋͕ɺϒϩοΫͱͯ͠ͷධՁ݁ՌͱͳΔ

38.

CVJME#MPDL ෳ਺ͷ஋͔Β̍ͭͷ஋ʹม‫׵‬ ⾣ ϒϩοΫ಺ͷධՁࣜͷ஋͕ɺϥϕϧͳ͠Ҿ਺Ͱ౉͞ΕΔ ⾣ ໭Γ஋ͷ‫ܕ‬͸ࣗ༝ʹܾఆՄೳʢධՁ݁Ռͷ‫ܕ‬ʣ static func buildBlock( _ a: Component, _ b: Component) -> Component { }

39.

CVJME#MPDL ड͚औΔ‫ܕ‬͸ࠞࡏՄೳ ⾣ ධՁࣜͷ஋͸ɺͦΕͧΕҟͳΔ‫Ͱܕ‬ड͚औΓՄೳ ⾣ ΦʔόʔϩʔυͰෳ਺ύλʔϯΛ‫ڞ‬ଘՄೳ static func buildBlock(_ a: Int, _ b: String, _ c: Bool) -> Component { }

40.

CVJME#MPDL Մม௕Ҿ਺Λར༻Մೳ ⾣ ධՁࣜͷ‫ʹ਺ݸ‬ॊೈʹରԠՄೳ ⾣ ಉ͡‫͋Ͱܕ‬Ε͹Մม௕Ҿ਺Ͱड͚औΕΔ static func buildBlock(_ components: Component...) -> Component { }

41.

CVJME#MPDL ධՁࣜͷ஋ʹ7PJEΛར༻Մೳ ⾣ ධՁࣜͷ஋͕7PJEͷ৔߹΋ߟྀՄೳ ⾣ 7PJEΛฦؔ͢਺ΛɺϒϩοΫ಺Ͱར༻Մೳʹ static func buildBlock(_ a: Int, _: Void) -> Component { }

42.

CVJME#MPDL ۭͷϒϩοΫΛ૝ఆՄೳ ⾣ ஋Λड͚औΒͳ͍͜ͱ΋Մೳ ⾣ ධՁࣜΛ಺แ͠ͳ͍ϒϩοΫΛ୲౰ static func buildExpression() -> Component { }

43.

CVJME&YQSFTTJPO ධՁ͔ࣜΒ݁ՌΛಋ͘ ධՁࣜ ධՁࣜͷ݁Ռ

44.

CVJME&YQSFTTJPO ཁॴ  ϒϩοΫ಺ͷ֤ධՁࣜΛม‫׵‬  লུՄೳ w লུ࣌͸ɺධՁࣜͷ݁Ռ͕ͦͷ··࢖ΘΕΔ  ධՁࣜͷ໭Γ஋ͷ‫ʹܕ‬Ԡͯ͡ΦʔόʔϩʔυՄೳ  ͻͱͭͰ΋ఆٛ͢ΔͱɺඞͣͲΕ͔͕ద༻͞ΕΔ  ϝιουͷ໭Γ஋͸ɺͦͷධՁࣜͷධՁ݁Ռͱͯ͠ CVJME#MPDLʹ౉͞ΕΔ

45.

CVJME&YQSFTTJPO ධՁࣜͷ஋Λม‫׵‬ ⾣ ධՁࣜͷ஋Λϥϕϧͳ͠Ҿ਺Ͱड͚औΔ ⾣ ໭Γ஋͸ɺ೚ҙͷ‫Ͱܕ‬ฦ٫ՄೳʢධՁࣜͷ࠷ऴ݁Ռʣ static func buildExpression(_ expression: Expression) -> Component { }

46.

CVJME&YQSFTTJPO ධՁࣜͰͷQSJOUରԠ ⾣ 7PJE‫ܕ‬Λड͚औΓɺద੾ͳ໭Γ஋Λࢦఆ ⾣ ໭Γ஋͕7PJEͷؔ਺ΛɺϒϩοΫ಺Ͱར༻Մೳʹ static func buildExpression(_: Void) -> Component { }

47.

CVJME&YQSFTTJPO ධՁࣜͰͷGBUBM&SSPSରԠ ⾣ /FWFS‫ܕ‬Λड͚औΓɺϒϩοΫ͕૝ఆ͢Δ‫ܕ‬Λฦ٫ ⾣ ໭Γ஋ͷ‫͕ܕ‬/FWFSͷؔ਺ΛɺϒϩοΫ಺Ͱར༻Մೳʹ static func buildExpression(_: Never) -> Component { }

48.

CVJME&YQSFTTJPO ແม‫׵‬ ⾣ ͨͱ͑͹/FWFS‫ܕ‬ͷධՁࣜΛ૝ఆͭͭ͠ɺ ͦΕҎ֎͸ม‫׵‬ෆཁͳΒɺδΣωϦΫεͰද‫ݱ‬Մೳ static func buildExpression(_: Never) -> Component { } static func buildExpression<T>(_ expression: T) -> T { } return expression

49.

CVJME%P %PϒϩοΫ಺ͷ૯߹݁Ռ͔Β࠷ऴతͳ݁ՌΛಋ͘ ϒϩοΫͷ݁Ռ Do ϒϩοΫͷ݁Ռ

50.

CVJME%P ཁॴ  ϒϩοΫ಺ͷ૯߹݁ՌΛ%Pͱͯ͠ͷ࠷ऴ݁Ռʹม‫׵‬  Ҿ਺͸ɺ಺ଆͷCVJME#MPDL͔Βͷ݁ՌΛड͚औΔ  ໭Γ஋͸ɺ֎ଆͷCVJME#MPDLʹҾ͖౉͞ΕΔ  ఆٛ͢Δ͜ͱͰɺϒϩοΫ಺ͰEPߏจͷར༻Λ‫ڐ‬Մ

51.

CVJME%P EPߏจͷར༻Λ‫ڐ‬Մ ⾣ EPϒϩοΫͷධՁ݁ՌΛड͚औΓɺ਌ϒϩοΫͷ݁ՌΛੜ੒ ⾣ ड͚औΔ‫ͱܕ‬ฦ͢‫ܕ‬͸ɺҟͳΔ΋ͷΛࢦఆՄೳ static func buildDo(_ component: Component) -> Component { }

52.

CVJME&JUIFS ϒϩοΫͷ૯߹݁Ռ͔Β৚݅ࣜͷ݁ՌΛಋ͘ ৚݅ʹ߹கͨ͠ ϒϩοΫͷ݁Ռ If ϒϩοΫͷ݁Ռ

53.

CVJME&JUIFS ཁॴ  ৚݅ʹ߹கͨ͠ϒϩοΫͷ݁ՌΛ*Gͱͯ͠ͷ࠷ऴ݁Ռʹม‫׵‬  ෳ਺ͷ৚݅෼‫ذ‬Λ໦ߏ଄Ͱද‫͢ݱ‬Δ  Ҿ਺Ͱड͚औΕΔͷ͸̎௨Γ  ৚݅੒ཱͨ͠ϒϩοΫ಺ଆͷCVJME#MPDL͔Βͷ݁Ռ  ৚݅੒ཱͨ͠CVJME&JUIFS͔Βͷ݁Ռ  ໭Γ஋͕౉͞ΕΔͷ͸̎௨Γ  ৚݅จͷ֎ଆͷCVJME#MPDL  ໦ߏ଄ͰΈͨ֎ଆͷCVJME&JUIFS

54.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ if … { BLOCK ① } else { ② } 1st ᶃ 2nd ᶄ

55.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ if … { BLOCK ① } else if { ② } else { ③ } 1st 1st ᶃ 2nd ᶅ 2nd ᶄ

56.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ if … { BLOCK ① } else if … { 1st 2nd ② } else if … { ③ } else { ④ } 1st ᶃ 2nd ᶄ 1st ᶅ 2nd ᶆ

57.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ if … { BLOCK ① } else if … { 1st 2nd ᶇ ② } else if … { 1st ③ 2nd } else if … { ④ } else { ⑤ 1st ᶃ 2nd ᶄ 1st ᶅ 2nd ᶆ

58.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ BLOCK 1st 2nd 1st 1st ᶃ 1st ᶇ 2nd 2nd ᶄ 1st ᶅ 2nd ᶆ 2nd ᶈ

59.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ BLOCK 1st 2nd 1st 1st ᶃ 1st 2nd 2nd ᶄ 1st ᶅ 2nd ᶆ 1st ᶇ 2nd ᶉ 2nd ᶈ

60.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ BLOCK 1st 2nd 1st 1st ᶃ 1st 2nd 2nd ᶄ 1st ᶅ 2nd ᶆ 1st ᶇ 2nd 2nd ᶈ 1st ᶉ 2nd ᶊ

61.

CVJME&JUIFS ෼‫ذ‬ઌ͕ͭͷ৔߹ BLOCK 1st 2nd ᶋ 1st 2nd 1st 1st ᶃ 2n 2n 1st ᶅ 1st 2n 1st ᶇ 2n 2n 1st ᶉ 2n

62.

CVJME&JUIFS ෼‫ذ‬ઌ͕‫ݸ‬ͷ৔߹ BLOCK 1st 2nd 1st 1st 1st ᶃ 2n 2n 1st ᶋ 2nd 1st ᶅ 1st 2n 1st ᶇ 2n 2n 1st ᶉ 2n 2nd ᶌ

63.

CVJME&JUIFS ෼‫ذ‬ઌ͕‫ݸ‬ͷ৔߹ BLOCK 1st 2nd 1st 1st 1st ᶃ 2n 2n 1st 2nd 1st ᶅ 1st 2n 1st ᶇ 1st ᶋ 2n 2n 1st ᶉ 2n 2nd ᶍ 2n

64.

CVJME&JUIFS JGจ͕ೖΕࢠͷ৔߹ if … { BLOCK ① } else { if … { 1st ᶃ 2nd ② } } else { ③ } BLOCK 1st ᶄ 2nd ᶅ

65.

CVJME&JUIFS ௐ΂ͯΈͨҹ৅  ೚ҙߦ਺ͷϒϩοΫͷ৔߹ɺ֊૚Λ੍‫͖Ͱޚ‬Δ‫͍ͳ͕͠ؾ‬  ͳ͓ɺೖΕࢠͨ͠৚݅จ͸ɺೖΕࢠͨ͠ઌͷϒϩοΫʹॴଐ ‫༻׆‬ͷҊͱͯ͠ ⾣ CVJME&JUIFS pSTU ͱCVJME&JUIFS TFDPOE Λ ۠ผ͠Α͏ͱ͠ͳ͍ ⾣ CVJME&JUIFSͰ৚݅ͷ֊૚Λ೺Ѳ͠Α͏ͱ͠ͳ͍ ⾣ ม‫׵‬͸CVJME#MPDLʹ೚ͤͯɺCVJME&JUIFS pSTU ͱ CVJME&JUIFS TFDPOE ͸ม‫݁׵‬Ռͷத‫ܧ‬ͷΈ

66.

"11&/%*9 'VODUJPO#VJMEFST

67.

'VODUJPO#VJMEFST ؔ਺ͷߏ଄ Build Block Build Function Build Build Expression Expression Build If Build Build Do Do Build Optional Build Block Build Build Either Do Build Block

68.

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