Swift Open Hours 2 - Swift ラボで聞いてきた話

103 Views

July 01, 16

スライド概要

WWDC.next にて、以前に話した『Swift ラボで聞いてきた話』で話せなかった話題をもう1つ話しました。『評価式で使う .self の効果は?』みたいな話題をざっくり紹介します。

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

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

4XJGU0QFO)PVST %FWFMPQFS5PPMT-BC" !88%$ /* 2016.07.01 @ WWDC.next */ &;/&5‫۽‬୩༑޺ 4XJGU1SFWJFX IUUQF[OFUKQ

2.

‫۽‬୩༑޺ /* @es_kumagai */ 5PNPIJSP,VNBHBJ /** */ ⾣ 4XJGU‫͕ޠݴ‬௒େ޷͖Ͱ͢ʂ ⾣ ΈΜͳͰָ͠Ήษ‫ڧ‬ձ͕େ޷͖Ͱ͢ʂ ⾣ ษ‫ڧ‬ձͰൃද͢Δͷ͕ͱͬͯ΋޷͖Ͱ͢ʂ ⾣ ॻ੶9DPEFపఈղઆॻ͖·ͨ͠ɻ ⾣ ٕज़ϒϩά&;/&5Λॻ͍ͨΓͯ͠·͢ɻ

3.

ษ‫ڧ‬ձΛ։࠵ͯ͠·͢ɻ ԣ඿J1IPOF։ൃऀษ‫ڧ‬ձ ΧδϡΞϧ4XJGUษ‫ڧ‬ձ ZJEFW ˏԣ඿ɾഅंಓ DTXJGU !ԣ඿ɾ੨༿୆ Θ͍Θ͍ɾΏΔ͘ɺJ1IPOF։ൃऀͷ ΈΜͳͰָ͘͠ա͢͝ͷ͕໨తͷձ ΏΔ͘ΈΜͳͰ4XJGU‫͍ͯͭʹޠݴ‬ ‫ޠ‬Β͑Δ৔͕ཉͯ࢝͘͠Ίͨձ ୈ̎̐ճΛʹ։࠵༧ఆ ୈ̍̌ճ͸։࠵‫ࠐݟ‬ /** */ ⾣ J04΍4XJGUͷษ‫ڧ‬ձΛ։࠵ͯ͠·͢ɻ ⾣ ҆৺ͯ͠ஊٛʹՖΛ࡙͔ͤΒΕ·͢Α͏ʹɻ

4.

8 8 %$ /* 2016/06/13  2016/06/17 */

8.

88%$ ͍ͪ͹Μָ͠Έʹ͍ͯͨ͠ηογϣϯ

10.

0QFO4PVSDFʹͳ͍Ӆ͠‫͕͋ۄ‬Δ͔΋

11.

ͳ͔ͬͨʜ ˚A

12.

88%$ ؑ৆ͨ͠શηογϣϯ

13.

ؑ৆ͨ͠શηογϣϯ 8IBU`T/FXJO4XJGU

14.

ؑ৆ͨ͠શηογϣϯ 4XJGU"1*%FTJHO(VJEFMJOFT

15.

ؑ৆ͨ͠શηογϣϯ (FUUJOH4UBSUFEXJUI4XJGU

16.

ؑ৆ͨ͠શηογϣϯ 7JTVBM%FCVHHJOHXJUI9DPEF

17.

ؑ৆ͨ͠શηογϣϯ *OUSPEVDJOH4XJGU1MBZHSPVOE

18.

ؑ৆ͨ͠શηογϣϯ *NQSPWJOH&YJTUJOH"QQT

19.

ؑ৆ͨ͠શηογϣϯ ߹‫ؒ ͭ̑ܭ‬ҧͬͯ̍ͭ  8IBU`T/FXJO4XJGU  4XJGU"1*%FTJHO(VJEFMJOFT  (FUUJOH4UBSUFEXJUI4XJGU  7JTVBM%FCVHHJOHXJUI9DPEF  *OUSPEVDJOH4XJGU1MBZHSPVOE  *NQSPWJOH&YJTUJOH"QQT

20.

88%$ ͦΕҎ֎͸Կ͍ͯͨ͠ͷʁ

21.

4XJGU-BCʂ %FWFMPQFS5PPMT-BC"

22.

%FWFMPQFS5PPMT-BC" 4XJGU0QFO)PVST

23.

4XJGU0QFO)PVST ϥϘͰ࣭໰ͨ͜͠ͱ  ྻ‫͕ࢠڍ‬-PXFS$BNFM$BTFʹͳͬͨ۩ମతͳཧ༝͸ʁ  !TXJGU@NJHSBUJPOଐੑͷ࢖͍ํΛ஌Γ͍ͨ  *60ଐੑ͸ೖΕࢠʹͰ͖ͳ͍͸ͣͳͷʹ ೖΕࢠʹͰ͖Δ৔߹͕͋Δͷ͸ͳͥʁ  $PMMFDUJPOͰJOEFY BGUFS ͕ඞਢʹͳͬͨཧ༝͸ʁ  TPVSDF-PDBUJPOͱpMF͸࿈ಈ͠ͳ͍΋ͷʁ  ETPIBOEMF͸࣮ߦ࣌ΤϥʔʹͳΔ͕ɺͲ͏࢖͏ͷ͔  ͳͥEFGFS಺Ͱએ‫ݴ‬લͷม਺͕࢖͑Δͷ͔  !DPOWFOUJPOͷ༻్Λ΋͏গ͠ৄ͘͠஌Γ͍ͨ  ධՁࣜʹର͢ΔTFMG͸Ͳ͏͍͏ޮՌ͕͋Δͷ͔  ‫ʹܕ‬ର͢ΔTFMGΛলུͰ͖Δ৔߹͕͋Δͷ͸ͳͥʁ  !XBSO@VOVTF@SFTVMU͕1MBZHSPVOEͰޮ͔ͳ͍ཧ༝͸ʁ

24.

88%$ 4XJGU-BC௒࠷ߴʂ

25.

4XJGU0QFO)PVST ͦ͜ͰਘͶͨ͜ͱΛ̍ͭ঺հ

26.

ධՁࣜʹର͢Δ TFMG ͷޮՌ

27.

ධՁࣜʹର͢Δ TFMG ͷޮՌ ൃ୺ ⾣ ‫ʹ໊ܕ‬TFMGΛ෇͚ΔͱϝλλΠϓʹͳΔ ⾣ ධՁࣜʹ΋TFMGΛ෇͚ΒΕΔʂʁ // 型名につけるとメタタイプが得られる let type: Int.Type = Int.self // Int.Type // 評価式に付けると… 評価結果…? let value: Int = (5 + 3).self // 8

28.

ධՁࣜʹର͢Δ TFMG ͷޮՌ TFMG͕ͳ͍ͷͱԿ͕ҧ͏ʁ ⾣ TFMGΛ෇͚Δͱ͕ͦ͜༏ઌ͞ΕΔ͚ΕͲ ⾣ TFMGΛ෇͚ͳͯ͘΋݁Ռ͸ಉ͡ʁ // 普通に計算すれば、掛け算が優先 let a = 1 + 2 * 5 // 11 // 評価式の一部を .self で括ると… let b = (1 + 2).self * 5 // 15 // でも.self がなくても同じ? let c = (1 + 2) * 5 // 15

29.

ධՁࣜʹର͢Δ TFMG ͷޮՌ TFMGͰධՁ͞Εͯͳ͍ʁ ⾣ ධՁ͞ΕͨΒ‫·ܾ͕ܕ‬Δ͸ͣ ⾣ Ϧςϥϧͷ‫͕ܕ‬ɺ·ܾͩ·Βͳ͍ʁ // 先に評価なら、このように Int 型になりそうだが let a = (1 + 2) as Int * 3.5 Binary operator '*' cannot be applied to operands of type 'Int' and 'Double' // リテラルのまま存続して Double 型に落ち着く let b = (1 + 2).self * 3.5 // 10.5

30.

ධՁࣜʹର͢Δ TFMG ͷޮՌ Ϧςϥϧͱ‫ܕ‬ͷ͓͞Β͍ ⾣ Ϧςϥϧࣗମʹ‫ܕ‬͸ͳ͍ ⾣ ධՁ͞Εͯɺ‫·ܾ͕ܕ‬Δ let value: Int = 10 let value: Double = 10 let value = 10 as Int32 let value = 10 + doubleValue

31.

Swift Lab で聞いてみた!

32.

ධՁࣜʹର͢Δ TFMG ͷޮՌ ίʔυͷॲཧͷྲྀΕ 4XJGUίʔυ 1BSTFS ͜͜ͰTFMG͕ ࢖ΘΕΔΒ͍͠ EVNQQBSTF "45 "CTUSBDU4ZOUBY5SFF 5ZQF$IFDLFS EVNQBTU "45 5ZQFT 4*-(FO FNJUTJMHFO 3BX4*-ʢ4XJGU*OUFSNFEJBUF-BOHVBHFʣ 4*-ॲཧ FNJUTJM $BOPOJDBM4*- *3(FOʜ FNJUJS ࣜͷධՁʢ࣮ߦʣ͸ ΋ͬͱ‫ޙ‬ΖͰ

33.

TFMG͸ 5ZQF$IFDLFS͕࢖͏Β͍͠

34.

͔֬ΊͯΈ·͠ΐ͏ʂ

35.

ී௨ͳ‫ه‬ड़

36.

ධՁࣜʹର͢Δ TFMG ͷޮՌ ී௨ͳ‫ه‬ड़ ⾣ ·ͣ͸ී௨ͷ‫ࣜࢉܭ‬Λ͔֬ΊΔ ⾣ ‫ހׅ‬Λ࢖ͬͯධՁͷ࢓ํΛม͑Δ let answer = (1 + 2) * 3.5

37.

ධՁࣜʹର͢Δ TFMG ͷޮՌ ී௨ͳ‫ه‬ड़ EVNQQBSTF/* 抜粋 */ ⾣ ͜ͷஈ֊Ͱ͸ɺ‫ܕ‬͸ܾ·͍ͬͯͳ͍ QBUUFSO@OBNFEBOTXFS   TFRVFODF@FYQSUZQFOVMM  QBSFO@FYQSUZQFOVMM  TFRVFODF@FYQSUZQFOVMM  JOUFHFS@MJUFSBM@FYQSUZQFOVMMWBMVF   VOSFTPMWFE@EFDM@SFG@FYQSUZQFOVMMOBNF TQFDJBMJ[FEOP   JOUFHFS@MJUFSBM@FYQSUZQFOVMMWBMVF   VOSFTPMWFE@EFDM@SFG@FYQSUZQFOVMMOBNF TQFDJBMJ[FEOP   GMPBU@MJUFSBM@FYQSUZQFOVMMWBMVF 

38.

ධՁࣜʹର͢Δ TFMG ͷޮՌ ී௨ͳ‫ه‬ड़ EVNQBTU/* 抜粋 */ ⾣ શମ͔Βɺద੾ͳ‫ܾ͕ܕ‬ఆ͞ΕΔ QBUUFSO@CJOEJOH@EFDM  QBUUFSO@OBNFEUZQF%PVCMFBOTXFS   CJOBSZ@FYQSUZQF%PVCMFOPUISPX  EFDMSFG@FYQSUZQF %PVCMF %PVCMF %PVCMF TQFDJBMJ[FEOP   CJOBSZ@FYQSUZQF%PVCMFOPUISPX  EFDMSFG@FYQSUZQF %PVCMF %PVCMF %PVCMF TQFDJBMJ[FEOP   UVQMF@FYQSJNQMJDJUUZQF %PVCMF %PVCMF   DBMM@FYQSJNQMJDJUUZQF%PVCMFOPUISPX  JOUFHFS@MJUFSBM@FYQSUZQF*OUWBMVF   DBMM@FYQSJNQMJDJUUZQF%PVCMFOPUISPX  UZQF@FYQSJNQMJDJUUZQF%PVCMF5ZQFUZQFSFQS%PVCMF   JOUFHFS@MJUFSBM@FYQSUZQF*OUWBMVF   DBMM@FYQSJNQMJDJUUZQF%PVCMFOPUISPX  UZQF@FYQSJNQMJDJUUZQF%PVCMF5ZQFUZQFSFQS%PVCMF   GMPBU@MJUFSBM@FYQSUZQF'1*&&&WBMVF 

39.

ධՁࣜʹର͢Δ TFMG ͷޮՌ ී௨ͳ‫ه‬ड़ FNJUTJMHFO/* 抜粋 */ ⾣ ϦςϥϧΛ‫ʹܕ‬ม‫͢׵‬Δίʔυ͕ొ৔ TJM!NBJO\ GVODUJPO@SFGTUBUJD JOGJY %PVCMF %PVCMF %PVCMF GVODUJPO@SFG!@5;'TPJN'54E4E@4E!DPOWFOUJPO UIJO  %PVCMF  %PVCMF %PVCMF GVODUJPO@SFGTUBUJD JOGJY %PVCMF %PVCMF %PVCMF GVODUJPO@SFG!@5'4E$G5@CVJMUJO*OUFHFS-JUFSBM#J@@4E !DPOWFOUJPO UIJO  #VJMUJO*OU !UIJO%PVCMF5ZQF %PVCMF NFUBUZQF!UIJO%PVCMF5ZQF JOUFHFS@MJUFSBM#VJMUJO*OU  BQQMZ   !DPOWFOUJPO UIJO  #VJMUJO*OU !UIJO %PVCMF5ZQF %PVCMF GVODUJPO@SFG!@5'4E$G5@CVJMUJO'MPBU-JUFSBM#G@@4E !DPOWFOUJPO UIJO  #VJMUJO'1*&&& !UIJO%PVCMF5ZQF %PVCMF NFUBUZQF!UIJO%PVCMF5ZQF GMPBU@MJUFSBM#VJMUJO'1*&&& Y& BQQMZ   !DPOWFOUJPO UIJO  #VJMUJO'1*&&&  !UIJO%PVCMF5ZQF %PVCMF

40.

TFMGΛ࢖ͬͨ‫ه‬ड़

41.

ධՁࣜʹର͢Δ TFMG ͷޮՌ TFMGΛ࢖ͬͨ‫ه‬ड़ ⾣ ධՁࣜʹTFMGΛ෇͚ͨ৔߹Λ͔֬ΊΔ ⾣ TFMGͰɺධՁࣜΛධՁ͢Δʁ let answer = (1 + 2).self * 3.5

42.

ධՁࣜʹର͢Δ TFMG ͷޮՌ TFMGΛ࢖ͬͨ‫ه‬ड़ EVNQQBSTF/* 抜粋 */ ⾣ EPU@TFMG@FYQS͕௥Ճ͞Ε͚ͨͩ QBUUFSO@OBNFEBOTXFS   TFRVFODF@FYQSUZQFOVMM  EPU@TFMG@FYQSUZQFOVMM  QBSFO@FYQSUZQFOVMM  TFRVFODF@FYQSUZQFOVMM  JOUFHFS@MJUFSBM@FYQSUZQFOVMMWBMVF   VOSFTPMWFE@EFDM@SFG@FYQSUZQFOVMMOBNF TQFDJBMJ[FEOP   JOUFHFS@MJUFSBM@FYQSUZQFOVMMWBMVF   VOSFTPMWFE@EFDM@SFG@FYQSUZQFOVMMOBNF TQFDJBMJ[FEOP   GMPBU@MJUFSBM@FYQSUZQFOVMMWBMVF 

43.

ධՁࣜʹର͢Δ TFMG ͷޮՌ TFMGΛ࢖ͬͨ‫ه‬ड़ EVNQBTU/* 抜粋 */ ⾣ EPU@TFMG@FYQSͷ‫ܾ͕ܕ‬ఆ͞Ε͚ͨͩ QBUUFSO@CJOEJOH@EFDM  QBUUFSO@OBNFEUZQF%PVCMFBOTXFS   CJOBSZ@FYQSUZQF%PVCMFOPUISPX  EFDMSFG@FYQSUZQF %PVCMF %PVCMF %PVCMF TQFDJBMJ[FEOP   EPU@TFMG@FYQSUZQF %PVCMF   CJOBSZ@FYQSUZQF%PVCMFOPUISPX  EFDMSFG@FYQSUZQF %PVCMF %PVCMF %PVCMF TQFDJBMJ[FEOP   UVQMF@FYQSJNQMJDJUUZQF %PVCMF %PVCMF   DBMM@FYQSJNQMJDJUUZQF%PVCMFOPUISPX  JOUFHFS@MJUFSBM@FYQSUZQF*OUWBMVF   DBMM@FYQSJNQMJDJUUZQF%PVCMFOPUISPX  UZQF@FYQSJNQMJDJUUZQF%PVCMF5ZQFUZQFSFQS%PVCMF   JOUFHFS@MJUFSBM@FYQSUZQF*OUWBMVF   DBMM@FYQSJNQMJDJUUZQF%PVCMFOPUISPX  UZQF@FYQSJNQMJDJUUZQF%PVCMF5ZQFUZQFSFQS%PVCMF   GMPBU@MJUFSBM@FYQSUZQF'1*&&&WBMVF 

44.

ධՁࣜʹର͢Δ TFMG ͷޮՌ TFMGΛ࢖ͬͨ‫ه‬ड़ FNJUTJMHFO/* 抜粋 */ ⾣ ී௨ʹ‫ͨ͠ࡌه‬ͷͱ ·ͬͨ͘ಉ͡ ίʔυ TJM!NBJO\ GVODUJPO@SFGTUBUJD JOGJY %PVCMF %PVCMF %PVCMF GVODUJPO@SFG!@5;'TPJN'54E4E@4E!DPOWFOUJPO UIJO  %PVCMF  %PVCMF %PVCMF GVODUJPO@SFGTUBUJD JOGJY %PVCMF %PVCMF %PVCMF GVODUJPO@SFG!@5'4E$G5@CVJMUJO*OUFHFS-JUFSBM#J@@4E !DPOWFOUJPO UIJO  #VJMUJO*OU !UIJO%PVCMF5ZQF %PVCMF NFUBUZQF!UIJO%PVCMF5ZQF JOUFHFS@MJUFSBM#VJMUJO*OU  BQQMZ   !DPOWFOUJPO UIJO  #VJMUJO*OU !UIJO %PVCMF5ZQF %PVCMF GVODUJPO@SFG!@5'4E$G5@CVJMUJO'MPBU-JUFSBM#G@@4E !DPOWFOUJPO UIJO  #VJMUJO'1*&&& !UIJO%PVCMF5ZQF %PVCMF NFUBUZQF!UIJO%PVCMF5ZQF GMPBU@MJUFSBM#VJMUJO'1*&&& Y& BQQMZ   !DPOWFOUJPO UIJO  #VJMUJO'1*&&&  !UIJO%PVCMF5ZQF %PVCMF

45.

·ͱΊ ධՁࣜͷTFMGࣗମ͸Կ΋͠ͳ͍ 4*-ੜ੒࣌ʹ͸ফ໓͢Δ

46.

4XJGU0QFO)PVST ϥϘͰ࣭໰ͨ͜͠ͱ/* 再掲 */  ྻ‫͕ࢠڍ‬-PXFS$BNFM$BTFʹͳͬͨ۩ମతͳཧ༝͸ʁ  !TXJGU@NJHSBUJPOଐੑͷ࢖͍ํΛ஌Γ͍ͨ  *60ଐੑ͸ೖΕࢠʹͰ͖ͳ͍͸ͣͳͷʹ ೖΕࢠʹͰ͖Δ৔߹͕͋Δͷ͸ͳͥʁ  $PMMFDUJPOͰJOEFY BGUFS ͕ඞਢʹͳͬͨཧ༝͸ʁ  TPVSDF-PDBUJPOͱpMF͸࿈ಈ͠ͳ͍΋ͷʁ  ETPIBOEMF͸࣮ߦ࣌ΤϥʔʹͳΔ͕ɺͲ͏࢖͏ͷ͔  ͳͥEFGFS಺Ͱએ‫ݴ‬લͷม਺͕࢖͑Δͷ͔  !DPOWFOUJPOͷ༻్Λ΋͏গ͠ৄ͘͠஌Γ͍ͨ  ධՁࣜʹର͢ΔTFMG͸Ͳ͏͍͏ޮೳ͕͋Δͷ͔  ‫ʹܕ‬ର͢ΔTFMGΛলུͰ͖Δ৔߹͕͋Δͷ͸ͳͥʁ  !XBSO@VOVTF@SFTVMU͕1MBZHSPVOEͰޮ͔ͳ͍ཧ༝͸ʁ

47.

88%$ ͱͬͯ΋ָ͍͠

48.

Έͳ͞Μ΋ɺͥͻ࣍ճࢀՃͯ͠ ଘ෼ʹ-BCΛຬ٤ͯ͠Έ͍ͯͩ͘͞ʂ

49.

Enjoy! Swift /* Thank you */