증감 연산자
var a= 0
let b = ++a // b 는 0
let c = a++ // c 는 1
// a 는 2
7.
단항 마이너스 연산자
letthree = 3
// three 는 3
let minusThree = -three
// minusThree 는 -3
let plusThree = -minusThree
// plusThree 는 3
8.
단항 플러스 연산자
letminusSix = -6
let alsoMinusSix = +minusSix
// alsoMinusSix 값은 -6, 변함없다
9.
복합 할당 연산자
vara = 1
a += 2
// a 는 3, a = a + 2 의 축약
let b = a += 2
// 요런건 안된다
10.
비교 연산자
a ==b
a != b
a > b
a < b
a >= b
a <= b
obj1 === obj2
// 동일 객체면 true, class 타입일 때 사용
obj1 !== obj2
// 동일 객체 아니면 false
11.
삼항 조건 연산자
(question? answer1 : answer2)
참이면 answer1, 거짓이면 answer2
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 :
20)
// rowHeight 는 90 (40 + 50)
12.
범위 연산자 (폐쇄 )
a…b
for index in 1…5 {
println(“(index) time 5 is (index
* 5)”)
}
// index 는 1, 2, 3, 4, 5
Control Flow 에서 다시 설명
13.
범위 연산자 (반폐쇄 )
a..b
let names = [“Anna”, “Alex”, “Brian”, “Jack”]
let count = name.count
// count 는 4
for i in 0..count {
println(“Person (i + 1) is called
(names[i])”)
}
// i 는 0, 1, 2, 3
14.
논리 연산자 (NOT)
letallowedEntry = false
if !allowedEntry {
println(“ACCESS DENIED”)
}
// ACCESS DENIED 출력됨
15.
논리 연산자 (AND)
letenteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
println(“Welcome!”)
} else {
println(“ACCESS DENIED”)
}
// ACCESS DENIED 출력
16.
논리 연산자 (OR)
lethasDoorKey = false
let knowOverridePassword = true
if hasDoorkey || knowOverridePassword {
println(“Welcome!”)
} else {
println(“ACCESS DENIED”)
}
// Welcome! 출력
17.
복합 논리 연산자
letenteredDoorCode = true
let passedRetinaScan = false
let hasDoorKey = false
let knowOverridePassword = true
// ture && false || false || true
if enteredDoorCode && passedRetinaScan || hasDoorKey ||
knowOverridePassword {
println("Welcome!")
} else {
println("ACCESS DENIED")
}
// Welcome! 출력
18.
괄호 명시
if (enteredDoorCode&& passedRetinaScan)
|| hasDoorKey || knowOverridePassword {
println("Welcome!")
} else {
println("ACCESS DENIED")
}
// Welcome! 출력
문자열 리터럴
let someString= “Some string literal value”
let wiseWords = “”Imagination is more important
than knowledge” – Einstein”
let dollarSign = “x24” // 1 바이트 유니코드
let balckHeart = “u2665” // 2 바이트 유니코드
let sparklingHeart = “U0001F496” // 4 바이트 유니코
드
21.
빈 문자의 초기화
varemptyString = “”
var anotherEmptyString = String()
// 두 문자열 모두 비어있으며 서로 똑같
다
if emptySring.isEmpty {
println(“ 여기엔 아무것도 보이지 않습니
다 .”)
}
// prints 여기엔 아무것도 보이지 않습
22.
문자열 가변성
var variableString= “Horse”
variableString += “ and carriage”
// variableString 은 “ Horse and carriage”
let constantString = “Highlander”
constantString += “ and another Highlander”
// 컴파일 에러 – 상수 문자열은 변경될 수 없
습니다 .
23.
문자열 값 타입
Stringsare value types
let a = “A string”
let b = a
// a 의 “ A string” 을 b 에 복사
class 는 Reference type
24.
문자와 작업하기
for characterin “Dog!🐶” {
println(character)
}
// D
// o
// g
// !
// 🐶
let wonSign:Character = “₩”
25.
문자 세기
let unusualMenagerie=
"Koala 🐶, Snail 🐶, Penguin 🐶, Dromedary 🐶"
println("unusualMenagerie has
(countElements(unusualMenagerie)) characters")
// unusualMenagerie has 40 characters
26.
문자열 및 문자합치기
let string1 = "hello“
let string2 = "there“
let character1: Character = "!“
let character2: Character = "?“
let stringPlusCharacter = string1 + character1 // "hello!“
let stringPlusString = string1 + string2 // "hello there“
let characterPlusString = character1 + string1 // "!hello“
let characterPlusCharacter = character1 + character2 //
equals "!?“
var instruction = "look over“
instruction += sting2 // "look over there“
var welcome = "good mornig“
welcome += character1 // "good morning!"
27.
문자열 삽입
let multiplier= 3
let message = “(multiplier) times 2.5
is (Double(multiplier) * 2.5)”
// 3 times 2.5 is 7.5 출력
괄호안에 “ (Double Quote), (Back
Slash), Carriage Return, New Line 등
을 포함할 수 없다
28.
문자열 비교
let a= “abcdefg”
let b = “abcdefghi”
a == b // false
a.hasPrefix(“abc”) // true
b.hasSuffix(“efg”) // false
29.
대문자 소문자 문자열
letnormal = “Could you help me,
please?”
let shouty = normal.uppercaseString
// COULD YOU HELP ME, PLEASE?
let whispered =
normal.lowercaseString
// could you help me, please?
30.
유니코드
let dogString =“Dog! 🐶”
dogString.utf8
dogString.utf16
dogString.unicodeScalars
배열 (Arrays)
var shoppingList= [“Eggs”, “Mink”]
println(“The list contains (shoppingList.count)
items”)
// The list contains 2 items
if shoppingList.isEmpty {
println(“empty”)
} else {
println(“not empty”)
}
// not empty
Dictionary 조작
airports.count
airports[“LHR”] =“London”
airports[“LHR”] = “London Heathrow”
airports.updateValue(“Dublin International”,
forKey: “DUB”)
if let airportName = airports[“DUB”] {
println(“airport name : (airportName)”)
} else {
println(“not found in dictionary”)
} // airports 에 DUB 이 없으면 nil 리턴
Dictionary 반복문 사용
for(airportCode, airportName) in airports {
println(“(airportCode): (airportName)”)
}
for airportCode in airports.keys {
println(“airport code: (airportCode)”)
}
for airportName in airports.values {
println(“airport name: (airportName)”)
}
41.
빈 Dictionary 생성
varnamesOfIntegers = Dictionary<Int,
String>()
namesOfIntegers[16] = “sixteen”
namesOfIntegers = [:] // empty
For 순환문
for-in
for indexin 1...5 {
println(“(index) times 5 is (index * 5)”)
}
for-condition-increment
for var index = 0; index < 3; ++index {
println(“index is (index)”)
}
44.
_ underscore
loop 내에값이 사용되지 않는다면 _
let base = 3
let power = 10
var answer = 1
for _ in 1...power {
answer *= base
}
45.
배열 반복
let names= [“Anna”, “Alex”, “Brain”,
“Jack”]
for name in names {
println(“Hello, (name)!”)
}
46.
Dictionary 반복
let numberOfLegs= [“spider”:8, “ant”:6,
“cat”:4]
for (animalName, legCount) in numbeOfLegs {
println(“(animalName): (legCount)
legs”)
}
For- 조건부 -증가부
for var index = 0; index < 3; ++index {
println(“index is (index)”)
}
var index : Int // for loop 밖에서 사용하기
위해
for index = 0; index < 3; ++index {
}
println(“executed (index) times”)
// execute 3 times
49.
while
var a =0
var b = 10
while a < b {
a++
}
println(a)
// 10
조건문 if
var temperatureInFahrenheit= 90
if temperatureInFahrenheit <= 32 {
println(“It’s very cold. consider wearing a scarf.”)
} else if temperatureInFahrenheit >= 86 {
println(“It’s really warm. Don’t forget to wear
sunscreen”)
} else {
println(“It’s not that cold. Wear a t-shirt.”)
}
// It’s really warm. Don’t forget to wear sunscreen
52.
switch
let someCharacter:Character =“e”
switch someCharacter {
case “1”, “2”, “3”:
case “a”, “e”, “i”, “o”, “u”:
println(“(someCharacter) is a vowel”)
case “b”, “c”, “d”, “f”, “g”, “h”, “j”, “k”, “l”, “m”
, “n”, “p”, “q”, “r”, “s”, “t”, “v”, “w”, “x”
, “y”, “z”:
println(“(someCharacter) is a consonant”)
default: // 반드시 포함
println(“(someCharacter) is not a vowel or a
consonent”)
}
53.
switch 범위로 매치
letcount = 3_000_000_000_000
let countedThings = “stars in the Mily Way”
var naturalCount : String
switch count {
case 0:
naturalCount = “no”
case 1...3:
naturalCount = “a few”
case 4...9:
naturalCount = “serveral”
case 10...99:
naturalCount = “tens of”
default: // 반드시 포함
naturalCount = “millions and millions of”
}
54.
switch 튜플
let somePoint= (1, 1)
switch somePoint {
case (0, 0):
println(“(0, 0) 은 원점에 있습니다” )
case (_, 0):
println(“(somePoint.0), 0) 은 x 축 상에 있습니다” )
case (0, _):
println(“(0, (somePoint.1)) 은 y 축 상에 있습니다” )
case (-2...2, -2...2):
println(“((somePoint.0), (somePoint.1)) 은 상자 안에 있습
니다” )
default:
println(“((somePoint.0), (somePoint.1)) 은 상자 밖에 있습
니다” )
}
55.
Value Bindings
let anotherPoint= (2, 0)
switch anotherPoint {
case (let x, 0):
println(“x 축 상에 있으며 x 의 값은 (x) 값입
니다” )
case (0, let y):
println(“y 축 상에 있으며 y 의 값은 (y) 입니
다” )
}
// x 축 상에 있으며 x 의 값은 2 입니다
56.
where
let yetAnotherPoint =(1, -1)
switch yetAnotherPoint {
case let(x, y) where x == y:
println(“((x), (y)) 는 x==y 인 곳에 있습니
다” )
case let(x, y) where x == -y:
println(“((x), (y)) 는 x==-y 인 곳에 있습니
다” )
case let(x, y):
println(“((x), (y)) 는 기타 구역에 있습니다
” )
}
57.
continue
let puzzleInput =“great minds think alike”
var puzzleOutut = “”
for character in puzzleInput {
switch character {
case “a”, “e”, “i”, “o”, “u”, “ “:
continue
default:
puzzleOutput += character
}
}
// puzzleOutput = “grtmndsthnklk”
break
let numberSymbol: Character= “3”
var possibleIntegerValue: Int?
switch numberSymbol {
case “1”:
possibleIntegerValue = 1
case “2”:
possibleIntegerValue = 2
default:
break // 아무것도 안할 때 break 를 쓰자
}
// possibleIntegerValue = nil
60.
fallthrough
let integerToDescribe =5
var description = “ 수 (integerToDescribe) 는 “
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
description += “ 소수이며 , 또한”
fallthrough
default:
description += “ 정수입니다 .”
}
// description = “ 수 5 는 소수이며 , 또한 정수입니
다 .”
61.
Labeled Statements
gameLoop: whilesquare != finalSquare {
if ++diceRoll == 7 { diceRoll = 1 }
switch square + diceRoll {
case finalSquare:
break gameLoop // println(“Game over!”) 로 점
프
case let newSquare where newSquare > finalSquare:
continue gameLoop // while 으로 점프
default:
square += diceRoll
square += board[sqaure]
}
}
println(“Game over!”)