Upgrade to Pro — share decks privately, control downloads, hide ads and more …

超初心者向け勉強会 Lesson1-2

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

超初心者向け勉強会 Lesson1-2

Swift言語を使って、型について紹介しています。

Avatar for SeyamaKota

SeyamaKota

February 07, 2026
Tweet

More Decks by SeyamaKota

Other Decks in Programming

Transcript

  1. ܕͷछྨ ϓϩηοα σʔλ ྫ 4USJOH จࣈྻ lε΢Οϑτz *OU ੔਺ 

     'MPBU ුಈখ਺఺਺   %PVCMF   #PPM ਅِ஋ USVF GBMTF
  2. Ͳ͜ʹ෇͚Δʁ var str: String = "ε΢Οϑτ" func test() -> Int

    {ɾɾɾ} ओʹม਺΍ؔ਺ͷ໭Γ஋ʹ෇͚Δɻ
  3. ܕͷෆҰக let test1: String = 1 var test2: String =

    "2" test2 = 22 func test3() -> Bool { return 3 }
  4. 4USJOHʹ͍ͭͯ w 4XJGUͷ4USJOH͸ɺ6OJDPEFʹ४ڌͨ͠ํ๏ͰςΩετΛѻ͏͜ͱ͕Ͱ͖ Δ w 6OJDPEFͱ͸จࣈίʔυͷࠃࡍతͳඪ४ن֨ͷҰͭʢූ߸Խจࣈू߹ʣ w จࣈʹ਺஋ΛׂΓ౰ͯΒΕ͍ͯͯɺͦͷ਺஋ΛίʔυϙΠϯτͱ͍͏ w Τϯίʔυํ๏ɿ65'

    65' 65'ʢจࣈූ߸Խํࣜʣ w Ͱ͸ɺଞͷछྨͰΤϯίʔυ͢Δͱʁ ࢀߟIUUQTTXJGUQSPHSBNNJOHMBOHVBHFKQHJUCPPLJPUIFTXJGUQSPHSBNNJOHMBOHVBHFKQMBOHVBHFHVJEFTUSJOHTBOEDIBSBDUFST
  5. 4IJGU+*4Ͱ΍ͬͯΈͨ func showGarbledText() { let text = "͜Μʹͪ͸" let data

    = text.data(using: .utf8)! // UTF-8Λ࢖ͬͯΤϯίʔυ // Shift JISΛ࢖ͬͯUnicodeʹม׵ͨ͠จࣈྻ if let broken = String(data: data, encoding: .shiftJIS) { print("Shift JISͰΤϯίʔυͨ͠จࣈྻ: \(broken)") } } ίϯιʔϧʹදࣔ͞ΕΔ݁Ռ Shift JISͰΤϯίʔυͨ͠จࣈྻ: ៰ಽ͂៰ő៰Ň៰ŕ
  6. ϓϩηοα͕CJUͷ৔߹ // uname -m ΛλʔϛφϧͰ࣮ߦ͢Δͱ֬ೝͰ͖Δ // ࡞ऀͷMacͷϓϩηοα͸ɺx86_64Ͱ64bitͳͷͰ let maxInt64: Int

    = 9223372036854775807 let minInt64: Int = -9223372036854775808 // Φʔόʔϑϩʔ 64bit let overflowMaxInt64: Int = 9223372036854775808 let overflowMinInt64: Int = -9223372036854775809 ˡ0, /( ˣ
  7. Ϋϥογϡͤ͞Δํ๏ func clashOverflowInt() { let maxAndMinInt = self.getMaxAndMinInt() // ͲͪΒ΋Ϋϥογϡ͢Δ

    _ = maxAndMinInt.max + 1 _ = maxAndMinInt.min - 1 } private func getMaxAndMinInt() -> MaxMinIntModel { // uname -m ΛλʔϛφϧͰ࣮ߦ͢Δͱ֬ೝͰ͖Δ // ࡞ऀͷMacͷϓϩηοα͸ɺx86_64Ͱ64bitͳͷͰ let maxInt64: Int = 9223372036854775807 // ࠷େ஋ let minInt64: Int = -9223372036854775808 // ࠷খ஋ return MaxMinIntModel(max: maxInt64, min: minInt64) }
  8. ුಈখ਺఺਺ͷߏ଄ ܕ ූ߸෦ ࢦ਺෦ Ծ਺෦ ߹ܭ ʢϏοταΠζʣ 'MPBU  

      %PVCMF     ࢀߟIUUQTXXXSLLDPNBSDIJWFT VUN@TPVSDFDIBUHQUDPN
  9. ൺֱ private let iterations = 10_000_000 func calcFloatValue() { var

    result: Float = 0.0 let start = Date() for _ in 0..<self.iterations { result += 1.0 / 3.0 } let end = Date() let elapsed = end.timeIntervalSince(start) // ඵ print("FloatܕͰܭࢉͨ݁͠Ռ:\(result)") print("\(elapsed)ඵ͔͔Γ·ͨ͠ɻ") } func calcDoubleValue() { var result: Double = 0.0 let start = Date() for _ in 0..<self.iterations { result += 1.0 / 3.0 } let end = Date() let elapsed = end.timeIntervalSince(start) print("DoubleܕͰܭࢉͨ݁͠Ռ:\(result)") print("\(elapsed)ඵ͔͔Γ·ͨ͠ɻ") } ίϯιʔϧʹදࣔ͞ΕΔ݁Ռ FloatܕͰܭࢉͨ݁͠Ռ:3090156.2 0.9137569665908813ඵ͔͔Γ·ͨ͠ɻ DoubleܕͰܭࢉͨ݁͠Ռ:3333333.3337136623 0.9393709897994995ඵ͔͔Γ·ͨ͠ɻ
  10. ϝϞϦ্ͷ஋Λ֬ೝͯ͠Έͨ func showBoolBytes() { // σʔλͷόοϑΝ಺ͷੜͷόΠτʹΞΫηε withUnsafeBytes(of: true) { (bytes:

    UnsafeRawBufferPointer) in print("trueͷϝϞϦ্ͷ਺஋:") bytes.forEach { print($0) } } withUnsafeBytes(of: false) { (bytes: UnsafeRawBufferPointer) in print("falseͷϝϞϦ্ͷ਺஋:") bytes.forEach { print($0) } } } ίϯιʔϧʹදࣔ͞ΕΔ݁Ռ trueͷϝϞϦ্ͷ਺஋: 1 falseͷϝϞϦ্ͷ਺஋: 0 ࢀߟIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOGPVOEBUJPOEBUBXJUIVOTBGFCZUFT @
  11. ϦϯΫू w IUUQTTXJGUQSPHSBNNJOHMBOHVBHFKQHJUCPPLJPUIFTXJGUQSPHSBNNJOHMBOHVBHFKQMBOHVBHFHVJEFTUSJOHTBOE DIBSBDUFST w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTXJGUTUSJOHJOJU EBUBFODPEJOH  w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTXJGUJOU

    w IUUQTXXXSLLDPNBSDIJWFT VUN@TPVSDFDIBUHQUDPN w IUUQTXXXNBDOJDBDPKQCVTJOFTTTFNJDPOEVDUPSBSUJDMFTJOUFM w IUUQTXXXMPSSJDDPNKQ"SUJDMFT fl PXNFUFSUFDIOPMPHZ fl PXNFUFSUFDIOPMPHZ fl PBUJOHQPJOU w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOGPVOEBUJPOEBUBXJUIVOTBGFCZUFT @