-
μ¬μ©ν λ κΈ°μ€μΌλ‘ λͺ ννκ² μμ±νλ κ² κ°μ₯ μ€μνλ€. λ©μλλ μμ±κ³Ό κ°μ κ°μ²΄λ€μ ν λ²λ§ μ μΈνκ³ λ°λ³΅μ μΌλ‘ μ¬μ©νλ€. APIλ₯Ό λ§λ€ λλ μ΄λ¬ν κ°μ²΄λ€μ μ΄ν΄νκΈ° μ½κ³ κ°κ²°νκ² λ§λλλ° μ€μ μ μ£Όκ³ μμ±ν΄μΌ νλ€. μ¬μ©νλ μν©μμ λ¬Έλ§₯μ λͺ ννκ² μ΄ν΄λλ‘ νμ.
-
λͺ νν ννμ΄ μμΆν κ°κ²°μ±λ³΄λ€ λ μ€μνλ€. μ€μννΈ μ½λλ κ°κ²°νκ² μμ±ν μ μμ§λ§, λ¨μ§ κΈμμλ₯Ό μ€μ¬μ κ°μ₯ μ§§μ μ½λλ₯Ό λ§λλ κ² λͺ©νλ μλλ€. μ€μννΈ μ½λμ κ°κ²°μ±μ μμ°μ€λ½κ² λ°λ³΅μ μΌλ‘ μ¬μ¬μ©νλ μ½λ(boilerplate)λ₯Ό μ€μ΄λ κΈ°λ₯κ³Ό κ°ν νμ μμ€ν μ λΆμν¨κ³Όλ‘ λλ¬λ λΏμ΄λ€.
-
λͺ¨λ μ μΈ λΆλΆμ μ£Όμμ μ κ·Ήμ μΌλ‘ μμ±νλΌ. λ¬Έμλ₯Ό μμ±νλ©΄μ μ»λ ν΅μ°°λ ₯μ API μ€κ³μ ν° μν₯μ μ€ μ μμΌλ λ―Έλ£¨μ§ λ§κ³ μ£Όμμ κΌ λ¬μ. κ°λ¨ν μ©μ΄λ‘ API κΈ°λ₯μ μ€λͺ νμ§ λͺ»νλ€λ©΄, μ€κ³μ λ¬Έμ κ° μμ κ°λ₯μ±μ΄ λλ€.
-
κ·Έ μ΄λ¦μ μ¬μ©νλ λΆλΆμ μ½λλ₯Ό μ½λ μ¬λμκ² νΌλμ μ€ μ μλ λ¨μ΄λ νΌνλ€.
-
λΆνμν λ¨μ΄λ μλ΅νλ€.
μ΄λ¦μ λͺ¨λ λ¨μ΄λ μ¬μ©μ κ΄μ μμ μ£Όμν μ 보λ₯Ό μ 곡ν΄μΌλ§ νλ€.
-
λ³μ, λ§€κ°λ³μ, μ°κ΄ νμ μ μ μΈν νμ μ΄λ μ μ½μ¬ν 보λ€λ μν μ λ§λ μ΄λ¦μ κ°λλ‘ νλ€.**
-
λ§€κ°λ³μ μν μ λͺ ννκ² λ£μ΄μ λΆμ‘±ν νμ μ 보λ₯Ό 보μνλ€.
-
λ©μλλ ν¨μλ₯Ό μ¬μ©ν λ μμ΄ λ¬Έμ₯μ μμ±νλ κ²μ²λΌ λλΌλλ‘ μ 곡νλ€.
-
ν©ν 리 λ©μλ μ΄λ¦μ "make"λ‘ μμνλ€. μ)
x.makeIterator() -
μ΄κΈ°ν(μμ±) λ©μλλ ν©ν 리 λ©μλλ 첫 λ²μ§Έ μΈμμ μΆκ°μ μΈ μ€λͺ μ ν¬ν¨νμ§ μλλ‘ νλ€. μ)
x.makeWidget(cogCount: 47) -
ν¨μλ λ©μλ μ΄λ¦μ μ¬μ΄λ μ΄ννΈ(side-effects)μ λ°λΌ λ€λ₯΄κ² μ νλ€
-
μ¬μ΄λ μ΄ννΈκ° μλ κ²½μ°λ λͺ μ¬νμΌλ‘ μμ±νλ€. μ)
x.distance(to: y),i.successor(). -
μ¬μ΄λ μ΄ννΈκ° μλ κ²½μ°μλ λͺ λ Ήν λμ¬λ‘ μμ±νλ€. μ)
print(x),x.sort(),x.append(y). -
κ°λ³/λΆλ³ λ©μλ μ΄λ¦μ ν¨κ» κ³ λ €ν΄μΌ νλ€.
-
λμ¬λ‘ νννλ©΄ μμ°μ€λ½κ² "ed"λ "ing"λ₯Ό λΆμ¬μ λΆλ³ λ©μλ μ΄λ¦μ λ§λ€ μ μλ€.
κ°λ³(Mutating)
x.sort(),x.append(y)λΆλ³(Nonmutating)
z = x.sorted(),z = x.appending(y)- λμμ λͺ μ¬λ‘ νννκΈ° μ ν©ν κ²½μ°μλ κ°λ³ λ©μλ μ΄λ¦μ "form-"μ λ¨Έλ¦Ώλ§λ‘ λΆμΈλ€.
λΆλ³
x = y.union(z),j = c.successor(i)κ°λ³
y.formUnion(z),c.formSuccessor(&i) -
-
λΆλ³μΌλ‘ μ¬μ©ν λ Boolean λ©μλλ νλ‘νΌν°λ₯Ό μ¬μ©ν λλ 리ν΄κ°μ λ°μμ λ¨μΈ ꡬ문(Assertion)μ²λΌ μ½λλ‘ νλ€. μ)
x.isEmpty,line1.intersects(line2). -
무μΈκ°λ₯Ό μ€λͺ νλ νλ‘ν μ½μ λͺ μ¬λ‘ μ½μ΄μΌ νλ€. μ)
Collection -
κΈ°λ₯μ΄λ κ°λ₯μ±μ νννλ νλ‘ν μ½μ -able, -ible, -ing λ±μ λΆμ¬μ νννλ€. μ)
Equatable,ProgressReporting. -
κ·Έ μΈμ μμ, λ³μ, μμ±, νμ λ€μ λͺ μ¬λ‘ μ½μ΄μΌ νλ€.
-
μ λ§€ν μ©μ΄λ₯Ό νΌνλ€. 'νΌλΆ(skin)'λ₯Ό 'ννΌ(epidermis)'λΌκ³ νμ§λ§κ³ , λ μ½κ² μλ―Έλ₯Ό μ λ¬ν μ μλ ννμ΄ μμΌλ©΄ κ·Έκ±Έ μ ννλΌ. μ λ¬Έ μ©μ΄(Term of Art)λ νμμ μΈ μν΅ λꡬμ§λ§, μ¬μ©νμ§ μμ κ²½μ° λμΉ μ μλ μ€μν μλ―Έλ₯Ό κΌ ννν΄μΌ νλ κ²½μ°λ§ μ¬μ©νμΈμ.
-
μ λ¬Έ μ©μ΄λ₯Ό μ¬μ©νλ€λ©΄ κΈ°μ‘΄ μλ―Έμ λ§μΆ° μ¬μ©νλ€. μΌλ°μ μΈ μ©μ΄κ° μ λ§€νκ±°λ λΆλͺ νν κ²μ μ ννκ² νννκΈ° μν΄μλ§ κΈ°μ μ μΈ μ©μ΄λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
- μ λ¬Έκ°λ₯Ό λλΌκ² νμ§λ§λΌ: κΈ°μ‘΄μ μΉμνκ² μ¬μ©νλ μ©μ΄μ μ ν μλ‘μ΄ μλ―Έλ₯Ό λΆμ¬νλ€λ©΄ μ λ°°λ€μ΄ λλΌκ±°λ νλ₯Ό λΌμ§λ λͺ¨λ₯Έλ€.
- μ΄λ³΄μλ₯Ό ν·κ°λ¦¬κ² νμ§λ§λΌ: μΉμμ μ©μ΄λ₯Ό μ°Ύμ 곡λΆνλ μ¬λλ€μκ²λ μ©μ΄μ μ νμ μΈ μλ―Έκ° μ€μνλ€.
-
μΆμ½μ΄λ₯Ό νΌνλ€. μ λ¬Έ μ©μ΄λ©΄μ νμ€ ννκ° μλ μ½μλ μλͺ» νμ΄μ°κ±°λ μ€ν΄λ₯Ό ν μ μλ€.
-
μ λ‘λ₯Ό λ°μλ€μΈλ€. λͺ¨λ μ΄λ³΄μλ₯Ό μν΄ μ©μ΄λ₯Ό μ μ§ λ§κ³ κΈ°μ‘΄ λ¬Ένμμ μ°μ΄λ μ©μ΄κ° μ ν©νλ€.
-
λ³μ, μμ, ν¨μ, λ©μλ, νμ λ±μ μ΄λ¦μ μ λμ½λμμ μ§μνλ μ΄λ€ λ¬Έμ(νκΈ, νμ, μλ¬Έ, μ«μ, μ΄λͺ¨ν°μ½ λ±)λΌλ μ¬μ©ν μ μλ€.
λ€λ§ λ€μκ³Ό κ°μ μμΈ κ²½μ°λ μ¬μ©ν μ μλ€.
- μ€μννΈμμ 미리 μ ν μμ½μ΄ λλ ν€μλ
- ν΄λΉ μ½λ λ²μ λ΄μμ 미리 μ¬μ©λλ κΈ°μ‘΄ μ΄λ¦κ³Ό λμΌν μ΄λ¦
- μ°μ°μλ‘ μ¬μ©λ μ μλ κΈ°νΈ(+,-,*,/)
- μ«μλ‘ μμνλ μ΄λ¦
- κ³΅λ°±μ΄ ν¬ν¨λ μ΄λ¦
-
λμλ¬Έμ νκΈ°λ²μ λ°λ₯Έλ€.
- ν¨μ, λ©μλ, μΈμ€ν΄μ€ μ΄λ¦μ 첫 κΈμλ₯Ό μλ¬Έμλ‘ μ¬μ©νλ
LowerCamelCaseλ₯Ό μ¬μ©νλ€. - ν΄λμ€, ꡬ쑰체, μ΅μ€ν
μ
, νλ‘ν μ½, μ΄κ±°ν(enum) μ΄λ¦μ νμ
μ μ΄λ¦μ΄κΈ° λλ¬Έμ 첫 κΈμλ₯Ό λλ¬Έμλ‘ μ¬μ©νλ
UpperCamelCaseλ‘ νκΈ°νλ€. - λͺ
λ Ή ꡬ문 λ€μ μΈλ―Έμ½λ‘ (;)μ λΆμ΄λ κ²μ μ ν μ¬νμ΄λ€.
(But, κ΅³μ΄ λΆμ΄μ§ λ§ κ²) - λμλ¬Έμλ₯Ό ꡬλΆνλ―λ‘ μ μνλ€. (Varμ varλ₯Ό λ€λ₯΄κ² μΈμν¨.)
- ν¨μ, λ©μλ, μΈμ€ν΄μ€ μ΄λ¦μ 첫 κΈμλ₯Ό μλ¬Έμλ‘ μ¬μ©νλ
-
O(1) 볡μ‘λκ° μλ μ°μ° νλ‘νΌν°(Computed Property)λ μ€λͺ μ λ§λ λ€. λλΆλΆ μ¬λλ€μ μ μ₯ νλ‘νΌν°μ μ΅μν΄μ νλ‘νΌν° κ°μ μ κ·Όνμ§ μλλ€κ³ μκ°νλλ°, μκ°μ΄ μ΄κΈλ μ μμ λ κ²½κ³ ν΄μΌ νλ€.
-
μμμ΄ μλ μμ λ‘μ΄ ν¨μλ₯Ό λ§λ€κΈ° 보λ€λ λ©μλλ μμ±μ λ§λ λ€. λ€μμ νΉλ³ν κ²½μ°μλ§ ν¨μλ₯Ό κ³ λ €νλΌ.
- λͺ
ννκ²
selfκ° μμ λ :min(x,y,z) - μ μ½μλ μ λ€λ¦ ν¨μμΈ κ²½μ° :
print(x) - ν¨μ ννμ΄ νΉμ ν λλ©μΈ νκΈ°λ²μ μ€μνλ κ²½μ° :
sin(x)
- λͺ
ννκ²
-
λ©μλκ° κ°μ μλ―Έλ₯Ό κ°κ³ μκ±°λ νΉμ ν λλ©μΈ μμμμλ§ λμμ νλ κ²½μ°μλ κΈ°λ³Έ μ΄λ¦μ 곡μ ν μ μλ€.
func move(from start: Point, to end: Point)
-
λ¬Έμν ν μ μλ λ§€κ° λ³μ μ΄λ¦μ μ ννλ€. ν¨μλ λ©μλλ₯Ό μ¬μ©ν λ λ§€κ°λ³μκ° κ°μΆ°μ ΈμλλΌλ μ¬μ ν μ€μν μν μ νλ€.
-
λ§€κ°λ³μ κΈ°λ³Έκ°μ μ§μ ν΄μ νΈλ¦¬ν¨μ λνλ€. λ§€κ° λ³μμ νν λκΈ°λ κ° μ체λ₯Ό κΈ°λ³Έκ°μΌλ‘ νμ©νλΌ.
-
κΈ°λ³Έ μΈμκ°μ λ§€κ° λ³μ λͺ©λ‘μμ λ§μ§λ§ μμΉλΆν° λ£λλ€. κΈ°λ³Έ μΈμκ°μ΄ μλ λ§€κ°λ³μλ λ©μλμμ λ μ€μν μν μ νκ³ , λ©μλλ₯Ό νΈμΆνλ κ³³μμ μμ μ μΌλ‘ μ΄κΈ°ννλ ννλ‘ μ¬μ©ν μ μλ€.
func move(from start: Point, to end: Point)x.move(from: x, to: y)
-
λ μ΄λΈμ΄ μΈμκ°μ ꡬλΆνλλ° λμμ΄ μλλ©΄ λͺ¨λ λ μ΄λΈμ μλ΅νλ€. μ)
min(number1, number2),zip(sequence1, sequence2) -
μ΄κΈ°ν μμ± ν¨μ(μ΄λμ λΌμ΄μ )μμ λ€λ₯Έ νμ κ°μ λ°μμ λ³ννκ³ λ³΄κ΄νλ (κ°λ³΄μ‘΄ λ³ν) κ²½μ°μλ 첫 λ²μ§Έ μΈμ λ μ΄λΈμ μλ΅νλ€. μ)
Int64(someUInt32) -
첫 λ²μ§Έ μΈμκ°μ΄ (μμ΄μμ) μ μΉμ¬ ννλΌλ©΄ μΈμκ° λ μ΄λΈμ νκΈ°νλ€.
-
첫 λ²μ§Έ μΈμκ°μ΄ (μ μΉμ¬κ° μλλΌ) λ€λ₯Έ λ¬Έλ²μμ ꡬ문μ΄λΌλ©΄ λ μ΄λΈμ μλ΅νκ³ ,
x.addSubview(y)μ²λΌ κΈ°λ³Έ μ΄λ¦μ μλ―Έμλ λ¨μ΄λ₯Ό λ€μ λΆμ¬λ λλ€. -
κ·Έ μΈμ λͺ¨λ κ²½μ°λ λ μ΄λΈμ νκΈ°νλΌ.
-
νν λ©€λ²μ λ μ΄λΈμ, ν΄λ‘μ λ§€κ°λ³μμ μ΄λ¦μ νκΈ°νλΌ.
-
AnyλAnyObject, μ μ½μλ μ λ€λ¦ λ§€κ°λ³μμ²λΌ μ μ½μλ λ€νμ±(polymorphism)μ μ€λ²λ‘λν λ νΌλνμ§ μλλ‘ μ£ΌμνλΌ.