Swiftμ κ΄μ¬μ΄ μ겨 μ κ° κ³΅λΆνκ³ μ 리νλ λ΄μ©λ€μ λΈλ‘κ·Έμ λ¨κ²¨λλ € ν©λλ€.
( νμ¬ "κΌΌκΌΌν μ¬μ μ¨μ Swift λ¬Έλ²νΈ" μ± μ 곡λΆνλ©° μ 리νκ³ μμ΅λλ€. )
μ°μ μ΄λ² κΈμ Swiftμ κΈ°λ³Έμ μΈ λ¬Έλ², λ³μ, μμ, μλ£ν, μ°μ°μ λ±μ λν΄ μμλ³΄κ² μ΅λλ€.
μ€μννΈ ( Swift )
- κ°μ²΄ μ§ν₯μ μ±κ²©μ μ§λ μ€ν¬λ¦½νΈ μ€νμΌμ μΈμ΄μ΄λ€.
- λ€μν μΈμ΄λ‘λΆν° μ°¨μ©ν νλμ νλ‘κ·Έλλ° κ°λ μ΄ λͺ¨λ λ°μλ κ²°κ³Όλ¬Όμ΄λ€.
μ μ²λ¦¬λ₯Ό μν ν€λ νμΌμ΄ νμμλ€.
- ν΄λμ€, ꡬ쑰체 μ μΈν λ μ μ (Interface)μ ꡬν (Implementation)μ λΆλ¦¬νμ§ μκ³ ν΅ν©νλ€.
- objective-C μμλ ν€λ νμΌμμ ν΄λμ€μ μνμΈ μΈν°νμ΄μ€ μ μΈ, λ©μΈ νμΌμμλ μΈν°νμ΄μ€μ λ΄μ© ꡬν
λͺ¨λ κ°μ²΄μ μ΄λ¦μμ λμλ¬Έμλ₯Ό νμ μ격ν ꡬλΆνλ€.
< κ΄λ‘ >
ν¨μμ λ©μλ, μΈμ€ν΄μ€λͺ μ 첫 κΈμλ μλ¬Έμ ν΄λμ€μ ꡬ쑰체, νλ‘ν μ½ λ± κ°μ²΄μ 첫 κΈμλ λλ¬Έμλ‘ νννλ€.
ꡬ문 λμμ μΈλ―Έμ½λ‘ μλ΅ κ°λ₯νλ€.
- μΈλ―Έμ½λ‘ μΌλ‘ λ§κ°ν΄λ μ€λ₯λ λ°μνμ§ μλλ€.
- μ½λ κ°λ μ±μ μν΄ λΆμ¬μ€ μ μλ€.
- ν μ€μ λ κ° μ΄μμ ꡬ문μ μμ±ν λλ νμνλ€.
μνΈλ¦¬ ν¬μΈνΈ (μμμ )μΌλ‘ μ¬μ©λλ main() ν¨μκ° μλ€.
- λμ , @UIApplicationMain μ΄λ Έν μ΄μ μ¬μ©ν΄μ μ±μ μμνλ κ°μ²΄ μ§μ
- νλμ μ±μμ @UIApplicationMain μ΄λ Έν μ΄μ μ΄ λΆμ κ°μ²΄λ λ¨ νλ
λ¬Έμμ΄λΏ μλλΌ λ¬Έμλ ν° λ°μ΄νλ₯Ό μ¬μ©νλ€.
- λ¬Έμλ₯Ό μ μ₯νλ λ³μλ μμμ νμ
μ λ°λμ Character νμ
μΌλ‘ λͺ
μν΄μ£Όμ΄μΌ νλ€.
- μ§μ ν΄μ£Όμ§ μμΌλ©΄ λ¬Έμμ΄λ‘ μ²λ¦¬λλ€.
import λ λΌμ΄λΈλ¬λ¦¬, νλ μμν¬ μ°Έμ‘° μ©λμ΄λ€.
- νλ‘μ νΈ λ΄μ μ μΈλ λ€λ₯Έ κ°μ²΄λ₯Ό νΈμΆν λλ λ³λμ import κ΅¬λ¬Έμ΄ νμ μλ€.
- νλ‘μ νΈ λ²μμ λ€μμ€νμ΄μ€κ° μ 곡λκΈ° λλ¬Έμ
ν μ€ μ£Όμ, μ¬λ¬ μ€ μ£Όμ μ²λ¦¬ λ°©μ μ¬μ© κ°λ₯
- // → ν μ€μ© μ£Όμ
- /* ... */ → μ¬λ¬ μ€μ© μ£Όμ
π‘ μ¬λ¬ μ€ μ£Όμμμ λλΆλΆμ μΈμ΄λ 첫 λ²μ§Έ λμ€λ */ μμ λͺ¨λ μ£Όμμ΄ μ’ λ£λλ€.
νμ§λ§ μ€μννΈλ μ€μ²©λ μ£Όμμ μ°¨λ‘λλ‘ ν΄μν΄μ κ·Έμ λ§λ λ¨κ³λ§νΌ μ£Όμ ν΄μ κ° κ°λ₯νλ€.
try ~ catch μ€λ₯ μ²λ¦¬ μ§μ
- μ€μννΈ 2.0λΆν° μΆκ°λ ꡬ문μ΄λ€.
- ν¨μλ λ©μλκ° λ¦¬ν΄κ° λλ 맀κ°λ³μλ₯Ό μ΄μ©νμ§ μκ³ μΈλΆλ‘ μ§μ μ€λ₯λ₯Ό λμ§ μ μλλ‘ νλ κΈ°λ₯
- Optionalλ‘λ§ μ€λ₯λ₯Ό μ²λ¦¬νκΈ°μλ λ€νΈμν¬ μ²λ¦¬λ λ°μ΄ν° νμ± μ²λ¦¬ λ±μμ μ μ°νκ² λμνκΈ° νλ€μλ€.
λ³μμ μμ
- κ°μ μ μ₯ν, μ μ₯ν λ©λͺ¨λ¦¬ μ£Όμκ°μ μ΄λ¦μΌλ‘ μ°κ²°ν΄ λμ κ²
- μμ → ν λ² μ μ₯λ κ°μ λ€λ₯Έ κ°μΌλ‘ λ³κ²½ λΆκ°
- let
- μ μΈκ³Ό μ΄κΈ°νκ° λμμ μ΄λ£¨μ΄μ ΈμΌ νλ€.
- λ³μ → νμμ λ°λΌ μ μ₯λ κ°μ λͺ λ²μ΄λΌλ λ€λ₯Έ κ°μΌλ‘ λ³κ²½ κ°λ₯
- var
- μ μΈκ³Ό μ΄κΈ°νλ₯Ό λΆλ¦¬ν μ μλ€.
- κ°μ λ³κ²½ν λλ μ²μ μ μ₯νλ κ°κ³Ό μΌμΉνλ νμ
μ΄μ΄μΌ νλ€.
- λ€λ₯Έ νμ μ κ° μ§μ΄λ£μΌλ©΄ μ»΄νμΌ μ€λ₯
- λ³μμ μ΄κΈ°κ°μ΄ μ§μ λλ©΄ κ·Έ κ°μ μν΄ λ³μμ νμ κ²°μ
- μ»΄νμΌλ¬
- κ°μ κ²ν νμ¬ κ°μ₯ μ μ ν νμ μΆλ‘ νκ³ κ·Έμ λ§λ λ©λͺ¨λ¦¬ κ³΅κ° ν보, κ° μ μ₯
- ‘νμ μΆλ‘ κΈ°' λΌλ κΈ°λ₯ λͺ¨λμ μ»΄νμΌλ¬μ λ³λλ‘ λ΄μ₯, μ΅μ μ νμ κ²°μ νκ³ μ νλ€.
- μ μΈκ³Ό μ΄κΈ°ν μμ ‘=’ μ°μ°μμ μκ³Ό λ€μ 곡백 μ¬λΆλ λμΌνκ² μ μ©λμ΄μΌ νλ€.
let abc =100 // X
let abc= 100 // X
let abc = 100 // O
- λ³μ, μμλͺ μ 첫 λ²μ§Έ μ리μ μ«μλ λΆκ°λ₯
μλ£ν
- λ€λ₯Έ νμ μ νΉμ±μ μ μ§ν μ±λ‘λ κ²°ν© λΆκ°
- μ€μννΈμμλ λ¬Έμμ μ«μλ₯Ό λ°λ‘ κ²°ν©ν κ²½μ° μ€λ₯λ‘ μ²λ¦¬
Int
- λΆνΈ μλ μ μκ° μ μ₯
- μ μκ°μ λ²μ μ ν → μ»΄ν¨ν°μ CPU μ¬μμ λ°λΌ κ²°μ
- Int, Int8, Int16, Int32, Int64
UInt
- Unsigned Integer
- λΆνΈκ° μλ μ μ
- μμ μ μ λ²μμμ Int λ³΄λ€ λ λ°° ν° λ²μ
Double & Float
- Double
- 64bit λΆλ μμμ μλ£ν
- Float λ³΄λ€ λ λμ λ²μμ μμμ μλ κ° μ μ₯ κ°λ₯ (15 ~ 16μ리)
- Float
- 32bit λΆλ μμμ μλ£ν (7 ~ 8μ리)
- Typealias
- νμ μ κ°λ¦¬ν€λ ννλ§ λ¬λ¦¬νλ κ²
- Float32 → Float
- Float64 → Double
Bool
- true / false
- λ Όλ¦¬ κ° μ μ₯
String
- λ¬Έμμ΄ μ μ₯
- NSString κ°μ²΄ → Objective-C μ© String νμ
- Foundation νλ μμν¬μμ λ¬Έμμ΄μ μ½κ² λ€λ£¨κΈ° μν΄ μ 곡
- μ€μννΈμ String κ³Ό Objective-Cμ NSStringμ μλ‘ νΈνλμ΄ λ³ν κ°λ₯
- μ€λ₯ λ°μν κ°λ₯μ±μ΄ μ ν μλ μμ λ³ν
Character
- String νμ κ³Ό λ§μ°¬κ°μ§λ‘ ν°λ°μ΄ν μ¬μ©
- ν κ°μ λ¬Έμλ₯Ό μ μ₯ν μ μλ λ¨μΌ μλ£ν
Type annotation
- λ³μλ μμλ₯Ό μ μΈν λ κ·Έ νμ μ λͺ μμ μΌλ‘ μ μΈ
- μ΄λ€ νμ
μ κ°μ΄ μ μ₯λ κ²μΈμ§λ₯Ό μ»΄νμΌλ¬μ μ§μ μλ €μ£Όλ λ¬Έλ²
- var year : Int
- μ μΈκ³Ό μ΄κΈ°νλ₯Ό λΆλ¦¬ν κ²½μ° μ¬μ©
- μΌλ°μ μΌλ‘ μμλ₯Ό μ μΈν λλ λ°λμ μ΄κΈ°νλ₯Ό ν¨κ» ν΄μ£Όμ΄μΌ νμ§λ§, ν΄λμ€λ ꡬ쑰체μμ λ©€λ²λ‘ μ μΈλ μμλ μ μΈκ³Ό μ΄κΈ°νκ° λμμ μ΄λ£¨μ΄μ§μ§ μμλ μ€λ₯ x
- νμ
μΆλ‘ μΌλ‘ μ»μ΄μ§λ νμ
μ΄ μλ λ€λ₯Έ νμ
μ μ§μ μ§μ ν λ
- Int λμ Double, Float
- String λμ Character
- Double λμ Float
νμ μ΄ λ€λ₯Έ λ³μλΌλ¦¬ κ²°ν©ν λ
- λ°κΎΈκ³ μ νλ νμ
μ μλ‘μ΄ κ°μ²΄λ₯Ό λͺ
μμ μΌλ‘ μμ±ν΄μΌ νλ€.
- String()
- Int()
- κΈ°μ‘΄μ λ³μμ νμ
μ λ°κΎΈλ κ²μ΄ μλλΌ, μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό λ§λλ κ²μ΄λ€.
- κΈ°μ‘΄μ λ³μμλ μλ¬΄λ° μν₯μ΄ μλ€.
λ¬Έμμ΄ ν νλ¦Ώ
- λ³μλ μμμ κ°μ λ¬Έμμ΄ μμ ν¬ν¨μν¨λ€.
let str = "λ¬Έμμ΄ μμ \\(var) ν¬ν¨ μν€κΈ°"
- κ΄νΈ λ΄λΆμμ κ°μ μ°μ°νκ±°λ, 리ν°λ΄λ‘ ꡬμ±λ λ¨μ μ°μ°μ΄λ ννμλ μ²λ¦¬κ° κ°λ₯νλ€.
Triple Quoting, Multi-line String
- μ°μν μΈ κ°μ λ°μ΄νλ₯Ό μ΄μ©ν΄μ μ¬λ¬ μ€μ κ±ΈμΉ κΈ΄ λ¬Έμμ΄ μμ± κ°λ₯
- μ€μννΈ 4μμ μΆκ°λμλ€.
- Quoting → λ¬Έμμ΄μ λ°μ΄νλ‘ λ¬Άμ΄ νμνλ λ°©λ²
// μμ Quoting λ€μμλ λ°λμ μ€λ°κΏ ν μμ±
let str = """
Triple QuotingμΌλ‘
κΈ΄ λ¬Έμμ΄
μ
λ ₯νκΈ°
"""
// λλΌ λλ λ°λμ μ€λ°κΏ ν Quoting μ²λ¦¬
μ°μ°μ
- νΌμ°μ°μμ μ°μ°μ μ¬μ΄μ 곡백μ μμͺ½μ λμΌνκ² μ μ©λμ΄μΌ νλ€.
μ°μ μ°μ°μ
- λ¨ν μ°μ°μ
- -
- μ΄ν μ°μ°μ
- + , - , * , / , %
λΉκ΅ μ°μ°μ
- < , > , <= , >= , == , !=
- μ°μ° κ²°κ³Όλ νμ Bool νμ μ κ°
λ Όλ¦¬ μ°μ°μ
- μ£Όμ΄μ§ κ°μ λ Όλ¦¬ λΉκ΅λ₯Ό ν΅ν΄ μ°μ°
- ! , && , ||
λ²μ μ°μ°μ
- μ€μννΈμ μλ λ νΉν μ°μ°μ
- μ£Όμ΄μ§ κ° μ¬μ΄μ λ²μλ₯Ό μΌμ ν μ μ κ°κ²©μΌλ‘ νν
- Closed range operator (λ«ν λ²μ μ°μ°μ)
- a ... b
- μμͺ½ νΌμ°μ°μλ₯Ό λͺ¨λ ν¬ν¨ν λ²μ
- Half-closed range operator (λ° λ«ν λ²μ μ°μ°μ)
- a ..< b
- μ€λ₯Έμͺ½ κ²½κ³λ ν¬ν¨νμ§ μλ λ²μ
- λ°λ λ°©ν₯μΌλ‘λ μ¬μ©ν μ μλ€.
- μΌμͺ½κ³Ό μ€λ₯Έμͺ½ κ°μ λ°λλ‘ μ
λ ₯νλ©΄ Runtime Error λ°μ
- μ€νν΄ λ³΄κΈ° μ κΉμ§ λ°μνμ§ μλλ€.
λμ μ°μ°μ
= , += , -= , *= , /= , %= , <<= , >>= , &= , ^= , |=