swift basic operators-controlflow

61
Basic Operators Swift

Upload: wileychoi

Post on 27-Aug-2014

256 views

Category:

Software


4 download

Tags:

DESCRIPTION

아꿈사 swift Basic Operator, String and Character, Collection Types, Control Flow

TRANSCRIPT

Page 1: Swift basic operators-controlflow

Basic Operators

Swift

Page 2: Swift basic operators-controlflow

용어

단항 연산자• -a, !b, i++

이항 연산자• 2 + 3

삼항 연산자• (a ? b : c)

Page 3: Swift basic operators-controlflow

할당 연산자let b = 10 // 상수var a = 5 // 변수a = b// a 는 10

let (x, y) = (1, 2)// 튜플이용 x 는 1, y 는 2

if x = y {}// 대입연산자는 값을 반환하지 않으므로 오류

Page 4: Swift basic operators-controlflow

산술 연산자1 + 25 – 32 * 310.0 / 2.5// 오버플로우를 허용하지 않음// 오버플로우 연산자 이용 ( 예 a &+ b) >> Advanced Operators 참고

“hello, “ + “world” // “hello, world”// 덧셈 연산자는 문자열 지원

let dog:Character = “🐶”let cow:Character = “🐮”let dowCow = dow + cow // dowCow 는 “🐶🐮”

Page 5: Swift basic operators-controlflow

나머지 연산자

9 % 4// 1

-9 % 4// -1

8 % 2.5// 0.5

Page 6: Swift basic operators-controlflow

증감 연산자

var a = 0let b = ++a // b 는 0let c = a++ // c 는 1// a 는 2

Page 7: Swift basic operators-controlflow

단항 마이너스 연산자

let three = 3// three 는 3

let minusThree = -three // minusThree 는 -3

let plusThree = -minusThree// plusThree 는 3

Page 8: Swift basic operators-controlflow

단항 플러스 연산자

let minusSix = -6let alsoMinusSix = +minusSix// alsoMinusSix 값은 -6, 변함없다

Page 9: Swift basic operators-controlflow

복합 할당 연산자

var a = 1a += 2// a 는 3, a = a + 2 의 축약

let b = a += 2// 요런건 안된다

Page 10: Swift basic operators-controlflow

비교 연산자a == ba != ba > ba < ba >= ba <= bobj1 === obj2// 동일 객체면 true, class 타입일 때 사용obj1 !== obj2// 동일 객체 아니면 false

Page 11: Swift basic operators-controlflow

삼항 조건 연산자

(question ? answer1 : answer2)참이면 answer1, 거짓이면 answer2

let contentHeight = 40let hasHeader = truelet rowHeight = contentHeight + (hasHeader ? 50 : 20)// rowHeight 는 90 (40 + 50)

Page 12: Swift basic operators-controlflow

범위 연산자 ( 폐쇄 )a…b

for index in 1…5 {println(“\(index) time 5 is \(index * 5)”)

}// index 는 1, 2, 3, 4, 5

Control Flow 에서 다시 설명

Page 13: Swift basic operators-controlflow

범위 연산자 ( 반폐쇄 )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

Page 14: Swift basic operators-controlflow

논리 연산자 (NOT)let allowedEntry = falseif !allowedEntry {

println(“ACCESS DENIED”)}// ACCESS DENIED 출력됨

Page 15: Swift basic operators-controlflow

논리 연산자 (AND)let enteredDoorCode = truelet passedRetinaScan = falseif enteredDoorCode && passedRetinaScan {

println(“Welcome!”)} else {

println(“ACCESS DENIED”)}// ACCESS DENIED 출력

Page 16: Swift basic operators-controlflow

논리 연산자 (OR)let hasDoorKey = falselet knowOverridePassword = trueif hasDoorkey || knowOverridePassword {

println(“Welcome!”)} else {

println(“ACCESS DENIED”)}// Welcome! 출력

Page 17: Swift basic operators-controlflow

복합 논리 연산자let enteredDoorCode = truelet passedRetinaScan = falselet hasDoorKey = falselet knowOverridePassword = true

// ture && false || false || trueif enteredDoorCode && passedRetinaScan || hasDoorKey || knowOverridePassword {

println("Welcome!")} else {

println("ACCESS DENIED") }// Welcome! 출력

Page 18: Swift basic operators-controlflow

괄호 명시

if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowOverridePassword {

println("Welcome!")} else {

println("ACCESS DENIED")}// Welcome! 출력

Page 19: Swift basic operators-controlflow

Strings and Characters

Swift

Page 20: Swift basic operators-controlflow

문자열 리터럴

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 바이트 유니코드

Page 21: Swift basic operators-controlflow

빈 문자의 초기화

var emptyString = “”var anotherEmptyString = String()// 두 문자열 모두 비어있으며 서로 똑같다if emptySring.isEmpty {

println(“ 여기엔 아무것도 보이지 않습니다 .”)}// prints 여기엔 아무것도 보이지 않습니다 .

Page 22: Swift basic operators-controlflow

문자열 가변성

var variableString = “Horse”variableString += “ and carriage”// variableString 은 “ Horse and carriage”

let constantString = “Highlander”constantString += “ and another Highlander”// 컴파일 에러 – 상수 문자열은 변경될 수 없습니다 .

Page 23: Swift basic operators-controlflow

문자열 값 타입

Strings are value types

let a = “A string”let b = a// a 의 “ A string” 을 b 에 복사

class 는 Reference type

Page 24: Swift basic operators-controlflow

문자와 작업하기

for character in “Dog!🐶” {println(character)

}// D// o// g// !// 🐶let wonSign:Character = “₩”

Page 25: Swift basic operators-controlflow

문자 세기

let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪" println("unusualMenagerie has \(countElements(unusualMenagerie)) characters")

// unusualMenagerie has 40 characters

Page 26: Swift basic operators-controlflow

문자열 및 문자 합치기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!"

Page 27: Swift basic operators-controlflow

문자열 삽입

let multiplier = 3let 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 등을 포함할 수 없다

Page 28: Swift basic operators-controlflow

문자열 비교

let a = “abcdefg”let b = “abcdefghi”a == b // falsea.hasPrefix(“abc”) // trueb.hasSuffix(“efg”) // false

Page 29: Swift basic operators-controlflow

대문자 소문자 문자열

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?

Page 30: Swift basic operators-controlflow

유니코드

let dogString = “Dog! 🐶”dogString.utf8dogString.utf16dogString.unicodeScalars

Page 31: Swift basic operators-controlflow

Collection Types

Swift

Page 32: Swift basic operators-controlflow

배열 (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

Page 33: Swift basic operators-controlflow

배열 요소 추가

shoppingList.append(“Flour”)shoppingList += “Baking Powder”shoppingList += [“Chocolate Spread”, “Cheese”, “Butter”]

Page 34: Swift basic operators-controlflow

배열 조작

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)let apples = shoppingList.removeLast()

Page 35: Swift basic operators-controlflow

배열 반복문 사용

for item in shoppingList {println(item)

}for (index, value) in enumerate(shoppingList) {

println(“Item \(index + 1): \(value)”)}

Page 36: Swift basic operators-controlflow

배열 생성 , 초기화var someInts = Int[]()someInts.append(3) // 1 valuesomeInts = [] // 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]

Page 37: Swift basic operators-controlflow

Dictionaryvar airports: Dictionary<String,String> = [“TYO”, “Tokyo”, “DUB”, “Dublin”]var airports = [“TYO”: “Tokyo”, “DUB”: “Dublin”]

Page 38: Swift basic operators-controlflow

Dictionary 조작

airports.countairports[“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 리턴

Page 39: Swift basic operators-controlflow

Dictionary 요소 삭제

airports.removeValueForKey(“DUB”)airports[“DUB”] = nil

Page 40: Swift basic operators-controlflow

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)”)

}

Page 41: Swift basic operators-controlflow

빈 Dictionary 생성

var namesOfIntegers = Dictionary<Int, String>()namesOfIntegers[16] = “sixteen”namesOfIntegers = [:] // empty

Page 42: Swift basic operators-controlflow

Control Flow

Swift

Page 43: Swift basic operators-controlflow

For 순환문

for-infor index in 1...5 {

println(“\(index) times 5 is \(index * 5)”)}

for-condition-incrementfor var index = 0; index < 3; ++index {

println(“index is \(index)”)}

Page 44: Swift basic operators-controlflow

_ underscoreloop 내에 값이 사용되지 않는다면 _let base = 3let power = 10var answer = 1for _ in 1...power {

answer *= base}

Page 45: Swift basic operators-controlflow

배열 반복

let names = [“Anna”, “Alex”, “Brain”, “Jack”]for name in names {

println(“Hello, \(name)!”)}

Page 46: Swift basic operators-controlflow

Dictionary 반복

let numberOfLegs = [“spider”:8, “ant”:6, “cat”:4]for (animalName, legCount) in numbeOfLegs {

println(“\(animalName): \(legCount) legs”)}

Page 47: Swift basic operators-controlflow

문자열 반복

for character in “Hello” {println(character)

}// H// e// l// l// o

Page 48: Swift basic operators-controlflow

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

Page 49: Swift basic operators-controlflow

whilevar a = 0var b = 10while a < b {

a++}println(a)// 10

Page 50: Swift basic operators-controlflow

Do-Whilevar count = 0do {

count++} while count < 10println(count)// 10

Page 51: Swift basic operators-controlflow

조건문 ifvar 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

Page 52: Swift basic operators-controlflow

switchlet 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”)

}

Page 53: Swift basic operators-controlflow

switch 범위로 매치let count = 3_000_000_000_000let countedThings = “stars in the Mily Way”var naturalCount : Stringswitch 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”}

Page 54: Swift basic operators-controlflow

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)) 은 상자 밖에 있습니다” )}

Page 55: Swift basic operators-controlflow

Value Bindingslet anotherPoint = (2, 0)switch anotherPoint {case (let x, 0):

println(“x 축 상에 있으며 x 의 값은 \(x) 값입니다” )case (0, let y):

println(“y 축 상에 있으며 y 의 값은 \(y) 입니다” )}// x 축 상에 있으며 x 의 값은 2 입니다

Page 56: Swift basic operators-controlflow

wherelet 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)) 는 기타 구역에 있습니다” )}// (1, -1) 은 x==-y 인 곳에 있습니다 .

Page 57: Swift basic operators-controlflow

continuelet puzzleInput = “great minds think alike”var puzzleOutut = “”for character in puzzleInput {

switch character {case “a”, “e”, “i”, “o”, “u”, “ “:continuedefault:puzzleOutput += character}

}// puzzleOutput = “grtmndsthnklk”

Page 58: Swift basic operators-controlflow

breakvar count = 0while true {

count++if count == 10 {

break}

}

Page 59: Swift basic operators-controlflow

breaklet numberSymbol: Character = “3”var possibleIntegerValue: Int?switch numberSymbol {case “1”:

possibleIntegerValue = 1case “2”:

possibleIntegerValue = 2default:

break // 아무것도 안할 때 break 를 쓰자}// possibleIntegerValue = nil

Page 60: Swift basic operators-controlflow

fallthroughlet integerToDescribe = 5var description = “ 수 \(integerToDescribe) 는 “switch integerToDescribe {case 2, 3, 5, 7, 11, 13, 17, 19:

description += “ 소수이며 , 또한”fallthrough

default:description += “ 정수입니다 .”

}// description = “ 수 5 는 소수이며 , 또한 정수입니다 .”

Page 61: Swift basic operators-controlflow

Labeled StatementsgameLoop: 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 += diceRollsquare += board[sqaure]}

}println(“Game over!”)