<Ch.1> Swift Syntax π¦
λͺ©μ°¨
1. Variable & Constant
2. Converting Types
3. Comment
4. Tuple
5. Booleans(μ°Έ κ±°μ§)
6. and, or μ°μ°μ
7. μΌν μ°μ°μ
8. Scope
swift
) λ¬Έλ²μ κ°μΈμ μΌλ‘ 보μμ λ JaveScriptμ λ§€μ° μ μ¬ν μ μ΄ λ§μ΅λλ€. ECMA5,6,7,8
μ΄νμ μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ μμ£Ό μ’μ λΆλΆμ΄ swift
μ λ€ λ
Ήμ μμ΅λλ€.
κ·Έλμ μλ°μ€ν¬λ¦½νΈλ₯Ό λ€λ£¨λ μΉ κ°λ°μκ° swift
λ₯Ό λ°°μ μ λ ν¨μ¬ 빨리 λ°°μΈ μ μμ΅λλ€.
μ€μννΈμ μ₯μ μ κ°μ‘°νκΈ° μν΄ μλ₯Ό λ€μ΄λ³΄κ² μ΅λλ€.
'μΌνμ°μ°μ'λ λ λ€ μλ κ°λ
μ΄κ³ , JaveScriptμ Template literals
μ swiftμ 'string Interpolation
'(λ¬Έμμ΄ λ³΄κ°λ²) κ³Ό κΈ°λ₯μ΄ λκ°μ΅λλ€.
// javeScript
let a = 5
let b = 4
console.log("5 + 4 = (a + b) and 2 * 5 * 4 = (2 * a * b)")
var person = 'Mike';
var age = 28;
var output = myTag`that ${ person } is a ${ age }`;
// swift
let a = 5
let b = 4
print("5 + 4 = \(a + b) and 2 * 5 * 4 = \(2 * a * b)")
κΈ°λ₯μ κ°μ΅λλ€. μ΄ λ°μ λ³μ μμ μ€μ λ°©λ²μ΄λ, λμ
λ리, λ°°μ΄ λ±μ΄ λ§€μ° μ μ¬ν©λλ€. κ·Έλ¬λ©΄μλ struct
, private
, init
λ± μλ°μ€ν¬λ¦½νΈμ λ¨μ μ 보μνκ³ ν¨μ¨μ μΈ ν¨μκΈ°λ° νλ‘κ·Έλλ°μ κ°λ₯νκ² νλ€λ μ₯μ μ΄ μμ΅λλ€.
JavaScript
μμ μ°¨μ΄μ κ³Ό 곡ν΅μ μ μ€κ°μ€κ° νμν λλ§λ€ λ£λλ‘ νκ² μ΅λλ€.
swifμ μ₯μ μ swift 곡μ ννμ΄μ§ μμ νμΈν μ μμ΅λλ€.
λ§€μ° λͺ¨λν μΈμ΄μ
λλ€.
let κ°μμΉ©μ΄λ¦: String = "μ€μμΉ©"
μμ κ°μ΄ κ°μ²΄μ μ΄λ¦μ λͺ¨λ νκ΅μ΄λ‘ ν μ μμ΅λλ€. μ΅κ³ μ£ ?
π₯ 1. Variable & Constant
λ³μμ μμ, λ³μ(variable
)λ κ°μ μμ ν μ μκ³ , μμ(constant
)λ ν λΉλμ΄ μλ κ°μ μμ ν μ μμ΅λλ€.
κ°κ° λ³μλ let
ν€μλ, var
ν€μλλ₯Ό ν΅ν΄μ λ³μλ₯Ό μ μΈν©λλ€.
Swiftλ μμ μ±μ μν΄μ var
λ³΄λ€ let
μ μμ£Όλ‘ μ¬μ©ν κ²μ μ κ·Ήμ μΌλ‘ κΆμ₯νλλ°, μ΄λ νλ‘κ·Έλ¨μ΄ 볡μ‘ν΄μ‘μ λ κ°μ΄ μλ‘ μΆ©λν μ μκΈ° λλ¬Έμ
λλ€.
κ°λ¨ν νλ‘κ·Έλ¨μ λͺ°λΌλ μμμ μμμ λ°λ³΅νλ€λ³΄λ©΄ λ©λͺ¨λ¦¬ μ°Έμ‘° μ€λ₯ λ± λ€μν λ²κ·Έμ μλ¬λ¦΄ μ μμ΅λλ€.
μ½λ©μ νλ€λ³΄λ©΄ Xcode
κ° μμμ κ³ μ³μ£Όλ fix
λ²νΌμ νμ©ν΄μ let μμ£Όλ‘ μ¬μ©νλλ‘ ν©μλ€!
// μ©λ²
var swift = "fantastic modern language"
let since = 2014.9
μ°Έκ³ λ‘ WWDC14(Apple Worldwide developers Conference)
μμ swift 1.0μ 2014λ
9μ 곡κ°
λμμ΅λλ€!
μλ¬΄νΌ var
λ‘ ν λΉν κ°μ λ°κΏ μ λ μμ΅λλ€!
swift = "swift ver 1.1"
κ·Έλ¬λ μλμ κ°μ΄ let
μΌλ‘ ν λΉν κ°μ λ°κΎΈλ € ν λ μ»΄νμΌ μλ¬κ° λ°μν©λλ€.
since = 2014.10
since
λ let
ν€μλλ‘ ν λΉλμ΄ μλ λΆλ³νλ κ°μ΄κΈ° λλ¬Έμ λ°κΏ μ μλ€λ κ²μ μλ―Έ ν©λλ€!
μ΄λλ κ·Έλ₯ Fix
λ₯Ό μ΄μ§ λλ¬μ£Όλ©΄ varλ‘ μμμ λ°κΏμ€λλ€.
μ ν΅λ°©ν΅νμ£ ?
μμΌλ‘ λ§λ€λ let
μΌλ‘ λ§λ€κ³ νμν κ²½μ°μλ§ Fix λ₯Ό ν΅ν΄ var
ν€μλλ₯Ό μ¬μ©ν©μλ€.
π₯ 2. Converting Types
Swift
λ μ μ νμ΄ν μΈμ΄μ
λλ€. μ μ μΈμ΄λΌλ κ²μ μμμ μΈκΈν 'νμ
' μ¦ μλ£νμ μ»΄νμΌ λ¨κ³μμ κ²°μ νλ κ²μ
λλ€. λ‘μ° λ 벨(low level
) μΈμ΄μΈ C, C++, C#μ΄ μ΄μ ν΄λΉνκ³ κ°μ μ§μ ν΄ μ£Όμ΄μΌ ν©λλ€.
μ΄λ₯Ό "Type Annotation
" μ΄λΌκ³ ν©λλ€.
swiftκ° μ§μνλ νμ
μ λν λΆλΆμ μΈμΈνκ² λ°λ‘ λ€λ£¨λλ‘ νκ² μ΅λλ€.
// Swift Type Annotation
let lampOn: Bool = true
let lampOff: Bool = false
let lampName: String = "νλ¦νλ¦ μμ΄λ¨ν"
let pie: Float = 3.141592
let age: Int = 17
μμ κ°μ λ°©λ²μΌλ‘ μ μΈμ΄ κ°λ₯ν©λλ€.
π¦ μ₯μ
:
1. μ»΄νμΌ λ¨κ³μμ νμ
μ μ§μ νκΈ°μ μλκ° λΉ λ₯΄λ€.
2. νμ
μ λν λ¬Έμ λ₯Ό Xcode
κ° λ―Έλ¦¬ λ°κ²¬νκ³ μλ €μ£ΌκΈ°μ μ± μ μμ μ½λ μμ μ±μ΄ λλ€. νμ
κ΄λ ¨ λ¬Έμ ν΄κ²°μ΄ μ½λ€.
μ΄μ²λΌ νμ
μ λν κ·μ½μ΄ νμ€νκΈ°μ νμ
λΌλ¦¬ μ°μ°νκΈ° μν΄μλ νμ
컨λ²ν
, νμ
λ³ν
μ΄ νμν©λλ€.
let lampOn: Bool = true
let lampOff: Bool = false
let lampName: String = "νλ¦νλ¦ μμ΄λ¨ν"
print(lampName + "κ° μΌμ Έμλμ? ---> " + String(lampOn))
μμ κ°μ΄ Boolean
νμ
μ κ°μ String
μΌλ‘ 컨λ²ν
μ΄ κ°λ₯ν©λλ€. lampOn
κ·Έλλ‘ μ¬μ©νλ€λ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνμ§μ!
μΈν°λΈλ¦¬ν° μΈμ΄μ λ¬λ¦¬ λΆλ¦°κ³Ό μ μλ μ€μννΈμμ ν©μ³μ νλ¦°ν
ν μ μμ΅λλ€.
"νμ
μΆλ‘ : Type Inference
" swiftκ° κ΅³μ΄ type annotation
μ μ¬μ©νμ§ μκ³ λ μ μ νμ΄ν μ½λλ₯Ό μμ±ν μ μλλ‘ ν©λλ€.
π₯ 3. Comment(μ£Όμ)
μ£Όμμ²λ¦¬λ README.md
μ κ°μ΄ MarkDown
μλ λ§μ΄ μ°μ΄κ³ μ½λλ₯Ό μ§κ°μ μ μΌλ‘ μ€λͺ
νλ μ½λ©νΈμ μ°μ
λλ€.
νμ€ μ£Όμμ
// μ΄λ³΄μΈμ~ κ±°κΈ° λꡬ μμ! κ°μ λ¦¬λ¬΄μ§ μ΄λΌμ€~~~
μ¬λ¬ μ€ μ£Όμμ
/*
μ£μ‘ν©λλ€...
μμ¦ κ°μ μ΄λ¬΄μ§λ λ
Έλμ λΉ μ Έμμ΄μμ.
λ
Έλ μ’μ΅λλ€. κΌ λ€μ΄λ³΄μΈμ !!
*/
μ΄λ° μμΌλ‘ μ£Όμμ νμ©ν μ μμ΅λλ€! μλ°μ€ν¬λ¦½νΈμ κ°μ£ ?!
π₯ 4. Tuple
let cordinates = (2, 3)
let x = coordinates.0
let y = coordinates.1
μ μ½λλ μ’ν νλ©΄μ x, y μΆλ ₯νλ μ½λμ
λλ€.
μ΄λ κ² νλ©΄ xκ°μ΄ 0μΌλ‘ ννλκ³ y κ°μ΄ 1λ‘ ννλκΈ° λλ¬Έμ, λͺ
μμ μ΄μ§ λͺ»ν λ¨μ μ΄ μμ΅λλ€.
μ΄μ 'Named' tuple
μ μ¬μ©νμ¬ λͺ
μμ μΌλ‘ ννμ΄ κ°λ₯ν΄μ§λλ€. μλ μ²λΌμ!
let coordinatesNamed = (x: 2, y: 3)
let x = coordinatesNamed.x
let y = coordinatesNamed.y
let (x, y) = coordinatesNamed
λ§μΉ μλ°μ€ν¬λ¦½νΈ λΉκ΅¬μ‘°ν ν λΉ(ꡬ쑰λΆν΄ ν λΉ)μ²λΌ ννμ΄ κ°λ₯νκ² λμ£ !
π₯ 5. Booleans(μ°Έ κ±°μ§)
λΆλ¦°μ μ½λνλ¦μ μ μ΄ν λ λ§€μ° λ§μ΄ μ¬μ©λ©λλ€. isOn ν€μλκ° μ΄μ λΉμ·ν κΈ°λ₯μ νμ£ !
ν κΈμ΄ μΌμ§μν, κΊΌμ§μνλ λΆλ¦° νμ μ΄κ΅¬μ!
let isOn: Bool = true
if isOn {
print("---> true")
} else {
print("---> false")
}
let yes = true
let no = false
let isOneGreaterThanTwo = 1 > 2
if isOneGreaterThanTwo {
print("true")
} else {
print("false")
}
let a = "o"
let b = "mil"
let isSame = a == b
μ΄λ° μμΌλ‘ μ¬μ©μ΄ κ°λ₯ν΄μ!
π₯ 6. and, or μ°μ°μ
μλ°μ€ν¬λ¦½νΈμ μ¬λ¬ μΈμ΄μ λ§μ°¬κ°μ§λ‘ μλ μ¬ μ°μ°μλ₯Ό μ§μν©λλ€.
μ)
&&
: and μ°μ°μ (λλ€ λ§μ‘±ν΄μΌ true λ°ν)
||
: or μ°μ°μ (νλλ§ λ§μ‘±ν΄λ λλ€.)
import UIKit
let girl = "Ming"
let boy = "Chan"
let isGirl = girl == "Ming"
let isFemale = true
let MingAndFemale = isGirl && isFemale
let greetingMessage: String
if MingAndFemale {
greetingMessage = "Hello Ming!"
} else {
greetingMessage = "Hello somebody!"
}
print("Msg: \(greetingMessage)")
π₯ 7. μΌν μ°μ°μ
μ€μννΈλ μλ°μ€ν¬λ¦½νΈ μ²λΌ μΌν μ°μ°μλ₯Ό μ 곡νκ³ μμ΅λλ€.
let greetingMessage: String = MingAndFemale ? "Hello Ming!" : "Hello somebody!"
print("Msg: \(greetingMessage)")
π₯ 8. Scope
λ‘컬λ³μμ μ μλ³μμ λΉμ·ν λ΄μ©μΌλ‘ μ½λ λΈλ μμ μλ κ²μ΄ νλμ scope
μ
λλ€. μ μμ μΌλ‘ μ€μ λ μ½λ λλ λ³μ λ±μ λͺ¨λ ν¨μ scope
μμ μ°Έμ‘°ν μ μμ΅λλ€.(μ°μΌ μ μμ΅λλ€.)
κ·Έλ¬λ func κ°μ ν¨μ μμμ μ°μΈ let
, var
κ°μ²΄λ func
μ½λ λΈλ λ°μ μ°Έμ‘°ν μ μμ΅λλ€.
λλ¨Έμ§ λ€λ£¨μ§ μμ "μ°μ°μ", "eum
", "struct
", "static
", "lazy
", "optional
", "protocol
", "closure
", "extension
" λ±λ± κ°μ λΆλΆμ λ°λμ λ€μμ λ€λ£¨λλ‘ νκ² μ΅λλ€!
λμμ΄ λμ ¨μΌλ©΄ μ’κ² μ΅λλ€. π