101 Views
March 14, 17
スライド概要
みんなで Swift 復習会 (http://cswift.connpass.com) の談笑で使った資料です。これを題材に2時間ばかり、集まったみんなと談笑しました。
※ Docswell での公開に移行する直前の Slideshare での閲覧数は 795 でした。
正統派趣味人プログラマー。プログラミングとは幼馴染です。
ΈΜͳͰ4XJGU෮शձ $PNNFOU 4FNJDPMPOT /VNCFST ΧδϡΞϧ4XJGUϓϩάϥϛϯά ۽୩༑ IUUQF[OFUKQ 4XJGU
5IF#BTJDT $POTUBOUTBOE7BSJBCMFT
ίϝϯτ
ίϝϯτ ίϝϯτͷॻࣜ ⾣ ࣮ߦϓϩάϥϜʹؚΊͳ͍ςΩετΛ͖ͰࡌهΔ ⾣ ίʔυίϯύΠϧ࣌ʹແࢹ͞ΕΔ // 1行コメント /* 複数行 コメント */
ίϝϯτ ෳߦίϝϯτͷωετ ⾣ ෳߦίϝϯτωετͰ͖Δ ⾣ ਂ͞Λೝࣝͯ͠ɺదͳൣғ͕ίϝϯτʹͳΔ /* コメントの中で /* 複数行コメントアウトの記号 */ を使用しても 変なところでコメントが解消されないで済む */
ηϛίϩϯ
ηϛίϩϯ ߦ߸هෆཁ ⾣ ߦͯ͠ͱ߸هͷηϛίϩϯෆཁ ⾣ ͋ͬͯྑ͍ // 一般的にはセミコロンを書かない let a = 10 // セミコロンを書いても正しい表記 let b = 20;
ηϛίϩϯ ηϛίϩϯผͷ༻్ ⾣ ηϛίϩϯεςʔτϝϯτͷ۠ΓΛҙຯ͢Δ ⾣ ͻͱͭͷߦʹෳͷεςʔτϝϯτΛ͖ͰࡌهΔ let a = 10; let b = 20
ηϛίϩϯ ߦͰ߸هͳ͍ɺͱ͍͏͜ͱ ⾣ ෳߦΛͻͱͭʹ·ͱΊΔػೳͳ͍ ⾣ ߦ߸هΈ͍ͨͳɺܧଓߦදʹݱ͑ͳ͍ let x = arc4random_uniform (100); // (UInt32) -> UInt32 // 100 // 複数行に分けるには、継続することが判るように書く let y = arc4random_uniform( 100); // 25
ͱ ⾣ খ෦Λ࣋ͨͳ͍ ⾣ ූ߸͖ͱɺූ߸ͳ͠ͷ̎छྨʢ྆ऀͱΛؚΉʣ // Sigined Integer, Unsigned Integer 42 // Sigined Integer, Unsigned Integer 0 // Signed Integer -13
Λද͢ݱΔܕ ⾣ CJUɺCJUɺCJUɺCJU ⾣ ͦΕͧΕɺූ߸͖ͱූ߸ͳ͕͠ଘࡏ ܕ αΠζ NJO NBY *OU CJU *OU CJU *OU CJU *OU CJU 6*OU CJU 6*OU CJU 6*OU CJU 6*OU CJU
࠷େͷΛද͖ͰݱΔܕ ⾣ *OU.BYܕɺ6*OU.BYܕ ⾣ ܕΤΠϦΞεͰఆٛ͞Ε͍ͯΔ typealias IntMax = Int64 typealias UIntMax = UInt64
*OUܕ ⾣ ΄ͱΜͲͷ߹ɺ͜ͷܕΛ͏ ⾣ ࣮ߦڥͷ803%αΠζͱಉ͡ w CJUڥʜ*OUͱಉ͡αΠζʢҟͳΔܕʣ w CJUڥʜ*OUͱಉ͡αΠζʢҟͳΔܕʣ
6*OUܕ ⾣ ࣮ߦڥͷ803%αΠζͱಉ͡ w CJUڥʜ6*OUͱಉ͡αΠζʢҟͳΔܕʣ w CJUڥʜ6*OUͱಉ͡αΠζʢҟͳΔܕʣ
ܕͷ͍͚ ⾣ αΠζΛ໌֬ʹࢦఆ͍ͨ͠ͱ͖Ҏ֎*OU6*OUΛ༻ w ίʔυͷҰ؏ੑɺ૬ޓӡ༻ੑͷ্͕త ⾣ 6*OUූ߸ͳ͕͠۩ମతʹඞཁͳͱ͖͚ͩ͏ w ͦΕҎ֎ූ߸ͳ͠Λѻ͏໘Ͱ*OUΛਪ w Ұ؏ੑΛ࣋ͨͤɺίʔυͷՄ༻ੑΛߴΊΔ w ҟͳΔͰܕͷܕมΛ͑ΒΕΔ w *OUܕͷܕਪʹϚον͢Δ
ුಈখ
ුಈখ ුಈখͱ ⾣ খ෦Λ࣋ͭ ⾣ ΑΓൣғͷΛද͖ͰݱΔ ⾣ *&&&Λఆ͍ͯ͠Δ༷ࢠ 42.0 3.8545 0.00005
ුಈখ ුಈখ *&&& Ծ ࢦ ج ⾣ খΛද͢ݱΔΈ ⾣ খͷҐஔΛಈతཧ͢Δσʔλߏ ⾣ Ծɾجɾࢦͷ̏ͭͰද͢ݱΔ ⾣ ແݶେɾඇΛද͖ͰݱΔ
ුಈখ ුಈখΛද͢ݱΔܕ ⾣ CJUɺCJU ⾣ NBD04ͰCJUଘࡏ ܕ αΠζ ࠷େ ࠷̌ʹ͍ۙਖ਼ͷ࠷খ 'MPBU CJU º º %PVCMF CJU º º 'MPBU CJU º º
ුಈখ 'MPBUͱ%PVCMF ⾣ 'MPBUܕܻͷਫ਼ ⾣ %PVCMFܕܻͷਫ਼ ⾣ ਫ਼Λߟ͑ͯɺదͳํΛ༻͢Δ͜ͱ w ͲͪΒͰྑ͍ͳΒ%PVCMFΛਪ
ුಈখ ුಈখͷৄࡉ ⾣ ൃදࢿྉlເͱ࣮ݱͷؒڱzΛࢀর IUUQTXXXTMJEFTIBSFOFUUPNPIJSPLVNBHBJDTXJGU
҆ܕશͱܕਪ
҆ܕશͱܕਪ ҆ܕશ ⾣ 4XJGUl҆ܕશzͳޠݴ w దͳܕΛ4XJGU͕ఏࣔͯ͘͠ΕΔ w ίϯύΠϧ࣌ʹܕΛݕग़͠ɺΤϥʔΛݕग़Ͱ͖Δ ⾣ શͯͷ໘ͰlܕzΛ໌͢هΔඞཁͳ͍
҆ܕશͱܕਪ ܕਪ ⾣ ܕͷࡌهΛলུͰ͖Δ w దͳܕΛ4XJGU͕͚ͯͭ͘ݟΕΔ w จ຺͔Βஅͯ͘͠ΕΔ ⾣ 0CKFDUJWF$ΑΓlܕzΛॻ͘͜ͱ͕ང͔ʹগͳ͍ ⾣ มએͰݴେɺܕΛॻ͕͘ɺࣗͷͨΊʹ͢Δͷ
҆ܕશͱܕਪ มએ͚͓ʹݴΔܕਪ ⾣ ॳظΛ͏มએܕͰݴਪཱ͕ͭ ⾣ ॳظΑ͘ɺϦςϥϧͰׂΓͯΔ ⾣ ܕͷධՁࣜͰࢦఆՄೳ let count = 20 let π = 3.14 // Int // Double let seed = arc4random_uniform(20) // UInt32
҆ܕશͱܕਪ Ϧςϥϧͷܕਪ ⾣ ϦςϥϧΛ*ͱ͘ॻʹͣͤه໌ܕOUͱਪ ⾣ ුಈখϦςϥϧɺৗʹ%PVCMFͱਪ w ຊʹʁ let count = 20 let π = 3.14 type(of: count) type(of: π) // Int.Type // Double.Type
҆ܕશͱܕਪ ͱුಈখͷࠞࡏ ⾣ ϦςϥϧͱුಈখϦςϥϧΛࠞͥͨ࣌ɺ จ຺͔Β%PVCMF͕ܕਪ͞ΕΔ ⾣ Ϧςϥϧʹࢦܕఆ͕ͳ͘ɺͦΕࣗʹ͍ͳ͕ܕ // リテラルは適切な型に合わせられる let answer1 = 2 * 20 * 3.14 // Double // 非リテラルは適切に型が合っていないのが検出される let answer2 = 2 * radius * π FSSPSCJOBSZPQFSBUPS DBOOPUCFBQQMJFEUP PQFSBOETPGUZQF*OUBOE%PVCMF
Ϧςϥϧ
Ϧςϥϧ ਐදهϦςϥϧ ⾣ ಄ࣙΛ͚ͭͯɺϦςϥϧΛਐද͖ͰهΔ ⾣ ਐɺਐɺਐɺਐ let a = 1010 let b = 0x 1010 let c = 0b 1010 let d = 0o 1010 // Decimal: 1,010 // Hexadecimal: 4,112 // Binary: 10 // Octal: 520
Ϧςϥϧ ਐදුهಈখϦςϥϧ ⾣ ௨ৗਐ ⾣ ਐʹ͍ͨ͠ͱ͖಄ࣙΛ͚ͭΔ w ඞͣࢦද͢ʹهΔඞཁ͕͋Δ let v = 10.5 let w = 0x10.5p0 // Decimal: 10.5 // Hexadecimal: 16.3125
Ϧςϥϧ ࢦදුهಈখϦςϥϧ ⾣ ਐͰɺͰجදݱʢeʣ ⾣ ਐͰɺͰجදݱʢpʣ let x = 10.5e 10 let y = 0x10.5p 10 // 10.5×10 10 // 0x10.5× 2 10
Ϧςϥϧ ϦςϥϧΛಡΈ͘͢ ⾣ ಄ʹ0Λ͚ͭͯἧ͑ΒΕΔ ⾣ ؒʹ_ΛࡌهՄೳʢઌ಄ͱখͷޙΛআ͘ʣ let a = 1234 let b = 0025 let x = 77_777_770 let y = 12_345.2204_e100
ΈΜͳͰ4XJGU෮शձ &OEJOH
&OKPZ4XJGU 5IBOLZPV ΈΜͳͰ4XJGU෮शձ $PNNFOUT 4FNJDPMPOT /VNCFST ۽୩༑ IUUQF[OFUKQ ⾣ ίϝϯτ ⾣ ηϛίϩϯ ⾣ ⾣ ුಈখ ⾣ ҆ܕશͱܕਪ ⾣ Ϧςϥϧ