SlideShare a Scribd company logo
Basic Operators
Swift
용어
단항 연산자
• -a, !b, i++
이항 연산자
• 2 + 3
삼항 연산자
• (a ? b : c)
할당 연산자
let b = 10 // 상수
var a = 5 // 변수
a = b
// a 는 10
let (x, y) = (1, 2)
// 튜플이용 x 는 1, y 는 2
if x = y {
}
// 대입연산자는 값을 반환하지 않으므로 오류
산술 연산자
1 + 2
5 – 3
2 * 3
10.0 / 2.5
// 오버플로우를 허용하지 않음
// 오버플로우 연산자 이용 ( 예 a &+ b) >> Advanced Operators
참고
“hello, “ + “world” // “hello, world”
// 덧셈 연산자는 문자열 지원
let dog:Character = “🐶”
let cow:Character = “ ”�
let dowCow = dow + cow // dowCow 는 “🐶 ”�
나머지 연산자
9 % 4
// 1
-9 % 4
// -1
8 % 2.5
// 0.5
증감 연산자
var a = 0
let b = ++a // b 는 0
let c = a++ // c 는 1
// a 는 2
단항 마이너스 연산자
let three = 3
// three 는 3
let minusThree = -three
// minusThree 는 -3
let plusThree = -minusThree
// plusThree 는 3
단항 플러스 연산자
let minusSix = -6
let alsoMinusSix = +minusSix
// alsoMinusSix 값은 -6, 변함없다
복합 할당 연산자
var a = 1
a += 2
// a 는 3, a = a + 2 의 축약
let b = a += 2
// 요런건 안된다
비교 연산자
a == b
a != b
a > b
a < b
a >= b
a <= b
obj1 === obj2
// 동일 객체면 true, class 타입일 때 사용
obj1 !== obj2
// 동일 객체 아니면 false
삼항 조건 연산자
(question ? answer1 : answer2)
참이면 answer1, 거짓이면 answer2
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 :
20)
// rowHeight 는 90 (40 + 50)
범위 연산자 ( 폐쇄 )
a…b
for index in 1…5 {
println(“(index) time 5 is (index
* 5)”)
}
// index 는 1, 2, 3, 4, 5
Control Flow 에서 다시 설명
범위 연산자 ( 반폐쇄 )
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
논리 연산자 (NOT)
let allowedEntry = false
if !allowedEntry {
println(“ACCESS DENIED”)
}
// ACCESS DENIED 출력됨
논리 연산자 (AND)
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
println(“Welcome!”)
} else {
println(“ACCESS DENIED”)
}
// ACCESS DENIED 출력
논리 연산자 (OR)
let hasDoorKey = false
let knowOverridePassword = true
if hasDoorkey || knowOverridePassword {
println(“Welcome!”)
} else {
println(“ACCESS DENIED”)
}
// Welcome! 출력
복합 논리 연산자
let enteredDoorCode = 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! 출력
괄호 명시
if (enteredDoorCode && passedRetinaScan)
|| hasDoorKey || knowOverridePassword {
println("Welcome!")
} else {
println("ACCESS DENIED")
}
// Welcome! 출력
Strings and Characters
Swift
문자열 리터럴
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 바이트 유니코
드
빈 문자의 초기화
var emptyString = “”
var anotherEmptyString = String()
// 두 문자열 모두 비어있으며 서로 똑같
다
if emptySring.isEmpty {
println(“ 여기엔 아무것도 보이지 않습니
다 .”)
}
// prints 여기엔 아무것도 보이지 않습
문자열 가변성
var variableString = “Horse”
variableString += “ and carriage”
// variableString 은 “ Horse and carriage”
let constantString = “Highlander”
constantString += “ and another Highlander”
// 컴파일 에러 – 상수 문자열은 변경될 수 없
습니다 .
문자열 값 타입
Strings are value types
let a = “A string”
let b = a
// a 의 “ A string” 을 b 에 복사
class 는 Reference type
문자와 작업하기
for character in “Dog!🐶” {
println(character)
}
// D
// o
// g
// !
// 🐶
let wonSign:Character = “₩”
문자 세기
let unusualMenagerie =
"Koala 🐶, Snail 🐶, Penguin 🐶, Dromedary 🐶"
println("unusualMenagerie has 
(countElements(unusualMenagerie)) characters")
// unusualMenagerie has 40 characters
문자열 및 문자 합치기
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!"
문자열 삽입
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 등
을 포함할 수 없다
문자열 비교
let a = “abcdefg”
let b = “abcdefghi”
a == b // false
a.hasPrefix(“abc”) // true
b.hasSuffix(“efg”) // false
대문자 소문자 문자열
let normal = “Could you help me,
please?”
let shouty = normal.uppercaseString
// COULD YOU HELP ME, PLEASE?
let whispered =
normal.lowercaseString
// could you help me, please?
유니코드
let dogString = “Dog! 🐶”
dogString.utf8
dogString.utf16
dogString.unicodeScalars
Collection Types
Swift
배열 (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
배열 요소 추가
shoppingList.append(“Flour”)
shoppingList += “Baking Powder”
shoppingList += [“Chocolate Spread”,
“Cheese”, “Butter”]
배열 조작
var firstItem = shoppingList[0]
shoppingList[0] = “Six eggs”
shoppingList[4...6] = [“Bananas”,
“Apples”]
// “Six eggs”, “Mink”, “Flour”, “Baking Powder”, “Chocolate Spread”, “Cheese”,
“Butter”
// “Six eggs”, “Mink”, “Flour”, “Baking Powder”, “Bananas”, “Apples”
shoppingList.insert(“Maple Syrup”, atIndex:
0)
let mapleSyrup =
shoppingList.removeAtIndex(0)
배열 반복문 사용
for item in shoppingList {
println(item)
}
for (index, value) in
enumerate(shoppingList) {
println(“Item (index + 1): (value)”)
}
배열 생성 , 초기화
var someInts = Int[]()
someInts.append(3) // 1 value
someInts = [] // empty, Int[] 타입 유지
var threeDoubles = Double[](count:3,
repeatedValue:0.0)
// [0.0, 0.0, 0.0]
var anotherOnes = Array(count:3,
repeatedValue:2.5)
// 기본값에서 타입 추정 , [2.5, 2.5, 2.5]
var sixDoubles = threeDoubles + anotherOnes
// [0.0, 0.0, 0.0, 2.5, 2.5 2.5]
Dictionary
var airports: Dictionary<String,String> =
[“TYO”, “Tokyo”, “DUB”, “Dublin”]
var airports = [“TYO”: “Tokyo”, “DUB”:
“Dublin”]
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 요소 삭제
airports.removeValueForKey(“DUB”)
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)”)
}
빈 Dictionary 생성
var namesOfIntegers = Dictionary<Int,
String>()
namesOfIntegers[16] = “sixteen”
namesOfIntegers = [:] // empty
Control Flow
Swift
For 순환문
for-in
for index in 1...5 {
println(“(index) times 5 is (index * 5)”)
}
for-condition-increment
for var index = 0; index < 3; ++index {
println(“index is (index)”)
}
_ underscore
loop 내에 값이 사용되지 않는다면 _
let base = 3
let power = 10
var answer = 1
for _ in 1...power {
answer *= base
}
배열 반복
let names = [“Anna”, “Alex”, “Brain”,
“Jack”]
for name in names {
println(“Hello, (name)!”)
}
Dictionary 반복
let numberOfLegs = [“spider”:8, “ant”:6,
“cat”:4]
for (animalName, legCount) in numbeOfLegs {
println(“(animalName): (legCount)
legs”)
}
문자열 반복
for character in “Hello” {
println(character)
}
// H
// e
// l
// l
// o
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
while
var a = 0
var b = 10
while a < b {
a++
}
println(a)
// 10
Do-While
var count = 0
do {
count++
} while count < 10
println(count)
// 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
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”)
}
switch 범위로 매치
let count = 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”
}
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 (-guatda.com/cmx.p2...2, -guatda.com/cmx.p2...2):
println(“((somePoint.0), (somePoint.1)) 은 상자 안에 있습
니다” )
default:
println(“((somePoint.0), (somePoint.1)) 은 상자 밖에 있습
니다” )
}
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 입니다
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)) 는 기타 구역에 있습니다
” )
}
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
var count = 0
while true {
count++
if count == 10 {
break
}
}
break
let numberSymbol: Character = “3”
var possibleIntegerValue: Int?
switch numberSymbol {
case “1”:
possibleIntegerValue = 1
case “2”:
possibleIntegerValue = 2
default:
break // 아무것도 안할 때 break 를 쓰자
}
// possibleIntegerValue = nil
fallthrough
let integerToDescribe = 5
var description = “ 수 (integerToDescribe) 는 “
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
description += “ 소수이며 , 또한”
fallthrough
default:
description += “ 정수입니다 .”
}
// description = “ 수 5 는 소수이며 , 또한 정수입니
다 .”
Labeled Statements
gameLoop: while square != 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!”)

More Related Content

PPTX
Feel functional
PPTX
Python datatype
PPTX
자바스크립트 패턴 3장
PPTX
파이썬 스터디 2주차
PDF
Perl Script
PPTX
Fluent Python - Chapter 8
PDF
PHP 사용하기
PPTX
Valentine
Feel functional
Python datatype
자바스크립트 패턴 3장
파이썬 스터디 2주차
Perl Script
Fluent Python - Chapter 8
PHP 사용하기
Valentine

What's hot (20)

PDF
RPG Maker와 Ruby로 코딩 시작하기 Day 3
PPTX
Naive Bayes by Seo
PDF
Python Programming: Function
PPTX
PHP 기초 문법
PDF
php 시작하기
PDF
Haskell study 2
PPTX
파이썬+Operator+이해하기 20160409
PDF
Haskell study 5
PDF
[Swift] Operator
PPTX
PHP 함수와 제어구조
PDF
Scala
PPTX
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
PPTX
Java mentoring of samsung scsc 0
PDF
Haskell study 3
PDF
Python if loop-function
PPTX
스트림Api 스터디 2일
PDF
Haskell study 6
PPTX
빠르게 활용하는 파이썬3 스터디(ch1~4)
PPTX
Hacosa j query 10th
PPTX
하스켈 프로그래밍 입문 2
RPG Maker와 Ruby로 코딩 시작하기 Day 3
Naive Bayes by Seo
Python Programming: Function
PHP 기초 문법
php 시작하기
Haskell study 2
파이썬+Operator+이해하기 20160409
Haskell study 5
[Swift] Operator
PHP 함수와 제어구조
Scala
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
Java mentoring of samsung scsc 0
Haskell study 3
Python if loop-function
스트림Api 스터디 2일
Haskell study 6
빠르게 활용하는 파이썬3 스터디(ch1~4)
Hacosa j query 10th
하스켈 프로그래밍 입문 2
Ad

Similar to Swift basic operators-controlflow (20)

PDF
Shellscript에 대하여
PDF
파이썬 기본 문법
PDF
자료구조(data structure)_NOTE 4. 스택(stack).pdf
PPTX
0327.web&ruby&rails
PDF
게임프로그래밍입문 3주차
PDF
스칼라와 스파크 영혼의 듀오
DOCX
Javascript 완벽 가이드 정리
PDF
Javascript개발자의 눈으로 python 들여다보기
PPTX
Swift 0x02 기본 연산자
PDF
자료구조02
PPTX
자바스크립트 기초문법~함수기초
PDF
Es2015 Simple Overview
PPTX
R 프로그래밍 기본 문법
PDF
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
PPTX
Kotlin expression
PPTX
Kotlin with fp
PPTX
파이썬 문자열 이해하기
PPTX
파이썬 문자열 이해하기
PPTX
파이썬정리 20160130
PPTX
하스켈 프로그래밍 입문
Shellscript에 대하여
파이썬 기본 문법
자료구조(data structure)_NOTE 4. 스택(stack).pdf
0327.web&ruby&rails
게임프로그래밍입문 3주차
스칼라와 스파크 영혼의 듀오
Javascript 완벽 가이드 정리
Javascript개발자의 눈으로 python 들여다보기
Swift 0x02 기본 연산자
자료구조02
자바스크립트 기초문법~함수기초
Es2015 Simple Overview
R 프로그래밍 기본 문법
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
Kotlin expression
Kotlin with fp
파이썬 문자열 이해하기
파이썬 문자열 이해하기
파이썬정리 20160130
하스켈 프로그래밍 입문
Ad

Swift basic operators-controlflow

  • 2. 용어 단항 연산자 • -a, !b, i++ 이항 연산자 • 2 + 3 삼항 연산자 • (a ? b : c)
  • 3. 할당 연산자 let b = 10 // 상수 var a = 5 // 변수 a = b // a 는 10 let (x, y) = (1, 2) // 튜플이용 x 는 1, y 는 2 if x = y { } // 대입연산자는 값을 반환하지 않으므로 오류
  • 4. 산술 연산자 1 + 2 5 – 3 2 * 3 10.0 / 2.5 // 오버플로우를 허용하지 않음 // 오버플로우 연산자 이용 ( 예 a &+ b) >> Advanced Operators 참고 “hello, “ + “world” // “hello, world” // 덧셈 연산자는 문자열 지원 let dog:Character = “🐶” let cow:Character = “ ”� let dowCow = dow + cow // dowCow 는 “🐶 ”�
  • 5. 나머지 연산자 9 % 4 // 1 -9 % 4 // -1 8 % 2.5 // 0.5
  • 6. 증감 연산자 var a = 0 let b = ++a // b 는 0 let c = a++ // c 는 1 // a 는 2
  • 7. 단항 마이너스 연산자 let three = 3 // three 는 3 let minusThree = -three // minusThree 는 -3 let plusThree = -minusThree // plusThree 는 3
  • 8. 단항 플러스 연산자 let minusSix = -6 let alsoMinusSix = +minusSix // alsoMinusSix 값은 -6, 변함없다
  • 9. 복합 할당 연산자 var a = 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) let allowedEntry = false if !allowedEntry { println(“ACCESS DENIED”) } // ACCESS DENIED 출력됨
  • 15. 논리 연산자 (AND) let enteredDoorCode = true let passedRetinaScan = false if enteredDoorCode && passedRetinaScan { println(“Welcome!”) } else { println(“ACCESS DENIED”) } // ACCESS DENIED 출력
  • 16. 논리 연산자 (OR) let hasDoorKey = false let knowOverridePassword = true if hasDoorkey || knowOverridePassword { println(“Welcome!”) } else { println(“ACCESS DENIED”) } // Welcome! 출력
  • 17. 복합 논리 연산자 let enteredDoorCode = 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! 출력
  • 20. 문자열 리터럴 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. 빈 문자의 초기화 var emptyString = “” 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. 문자열 값 타입 Strings are value types let a = “A string” let b = a // a 의 “ A string” 을 b 에 복사 class 는 Reference type
  • 24. 문자와 작업하기 for character in “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. 대문자 소문자 문자열 let normal = “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
  • 32. 배열 (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
  • 33. 배열 요소 추가 shoppingList.append(“Flour”) shoppingList += “Baking Powder” shoppingList += [“Chocolate Spread”, “Cheese”, “Butter”]
  • 34. 배열 조작 var firstItem = shoppingList[0] shoppingList[0] = “Six eggs” shoppingList[4...6] = [“Bananas”, “Apples”] // “Six eggs”, “Mink”, “Flour”, “Baking Powder”, “Chocolate Spread”, “Cheese”, “Butter” // “Six eggs”, “Mink”, “Flour”, “Baking Powder”, “Bananas”, “Apples” shoppingList.insert(“Maple Syrup”, atIndex: 0) let mapleSyrup = shoppingList.removeAtIndex(0)
  • 35. 배열 반복문 사용 for item in shoppingList { println(item) } for (index, value) in enumerate(shoppingList) { println(“Item (index + 1): (value)”) }
  • 36. 배열 생성 , 초기화 var someInts = Int[]() someInts.append(3) // 1 value someInts = [] // empty, Int[] 타입 유지 var threeDoubles = Double[](count:3, repeatedValue:0.0) // [0.0, 0.0, 0.0] var anotherOnes = Array(count:3, repeatedValue:2.5) // 기본값에서 타입 추정 , [2.5, 2.5, 2.5] var sixDoubles = threeDoubles + anotherOnes // [0.0, 0.0, 0.0, 2.5, 2.5 2.5]
  • 37. Dictionary var airports: Dictionary<String,String> = [“TYO”, “Tokyo”, “DUB”, “Dublin”] var airports = [“TYO”: “Tokyo”, “DUB”: “Dublin”]
  • 38. 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 리턴
  • 40. 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 생성 var namesOfIntegers = Dictionary<Int, String>() namesOfIntegers[16] = “sixteen” namesOfIntegers = [:] // empty
  • 43. For 순환문 for-in for index in 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”) }
  • 47. 문자열 반복 for character in “Hello” { println(character) } // H // e // l // l // o
  • 48. 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
  • 50. Do-While var count = 0 do { count++ } while count < 10 println(count) // 10
  • 51. 조건문 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 범위로 매치 let count = 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 (-guatda.com/cmx.p2...2, -guatda.com/cmx.p2...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”
  • 58. break var count = 0 while true { count++ if count == 10 { break } }
  • 59. 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: while square != 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!”)