23.01.08 학습일기

19. ControlFlow - for in

let names = ["kim", "lee", "min"]

let numbers = [1,5,3,35,3,65]

for name in names { // in names => 3번 반복

print(name) // "kim", "lee", "min"가 출력

}

for number in numbers { // in numbers => 6번 반복

print(number) // 1,5,3,35,3,65가 출력

}

 

let myRange1 = (0...5)

let myRande2 = (0..<6)

for number in myRange1 {

print(number) // 0부터 5까지 출력

}

인덱스 값까지 가져오고 싶다!

=> for (index, name) in names.enumerated(){

print(name, index)

} // index도 같이 출력됨

하나 씩 늘어나는 값 말고 5분 간격으로 뛰어 넘고 싶다!

=> let minute = 60

for minute in 0..<minutes {

if minute % 5 == 0 {

print(minute)

}

} // 60번 반복, 0부터 59까지 5분 간격으로 출력됨

위의 방식과 같은 방식

// 0..<minutes

for minute in stride(from: 0, to: minute, by: 5) { // from: 시작, to: 끝(포함x), by: 간격

print(minute)

} // 12번 반복, 이게 더 효율적. 0부터 59까지 5분 간격으로 출력

// 0...minutes

for minute in stride(from: 0, through: minute, by: 5) { // from: 시작, to: 끝(포함o), by: 간격

print(minute)

}


20. ControlFlow - while

// while은 반복 끝이 정해지지 않을 때 사용

// 주사위 (1~6)

// 주사위 홀수 -1

// 주사위 짝수 +2

// 목표 10까지 도달

var dice = 0 // 랜덤하게 나오는 주사위 번호

var myPosition = 0

while myPosition < 10 {

dice = Int.random(in 1...6)

 

if dice % 2 ==0 {

myPosition += 2

}else if myPosition > 0 {

myPosition -= 1

}

print("dice", dice, " position", myPosition)

}

print("end")


21. ControlFlow - switch

var number = 14

switch number {

case 3:

print("삼")

case 10...100:

print("십~백")

case 5, 7:

print("오, 칠")

default:

print("기타 숫자")

}

 

var someString = "e"

switch someString {

case "a":

print("삼")

case "c"..."f":

print("씨~에프")

case "g", "z":

print("쥐, 지")

default:

break // 빠져 나감

//print("기타 문자")

}

 

 

// switch case let : 이름을 지정하여 해당되는 값을 받아와 그 값으로 무언가를 하고 싶을 때 사용

let media = ("abc음악", 180)

switch media {

case let (title, length):

print("제목", title)

print("길이", length)

} // 제목 abc음악

길이 180으로 출력

 

==> 만일 하나의 값만 쓰고 싶다면?

 

let media = ("abc음악", 180)

switch media {

case let (title, _):

print("제목", title)

} // 제목 abc음악만 출력


22. Function_1

// 파라미터에 하나의 값

func presentMyScore(score: Int) {

print(score.description + "점") // String 형으로 변환. 변환을 해야 숫자가 화면에 찍힘

}

presentMyScore(score: 50)

-----------------------------------------------

// 파라미터에 두 개의 값

func presentScore(myScore: Int, yourScore: Int) {

print(myScore.description + " vs " + yourScore.description)

}

func presentScore(myScore: 80, yourScore: 100)

-----------------------------------------------

// function return

func plus(numver1: Int, number2: Int) -> Int {

return number1 + number2

}

let sumResult = plus(numver1: 50, number2: 30)

print(sumResult)

-----------------------------------------------

// 파라미터가 없는 경우

func printHello() {

print("Hello")

}

printHello() + "안녕"

-----------------------------------------------

// multiple return values

func scoreList() -> [Int] {

return [50, 30, 60]

}

scoreList()

func scoreList2() -> (eng: Int, music: Int) {

return (50, 80)

}

scoreList2().eng

scoreList2().music

-----------------------------------------------

// argument lables, parameter name - 다른 이름을 사용하고 싶을 때

func sumNumber1(num number1: Int, num number2: Int) {

number1 + number2 // 이 때는 뒤에 이름 씀

}

sumNumber1(num: 80, num: 80) // 이 때는 앞에 이름 씀

// 딱히 이름을 쓰지 않아도 될 때

func sumNumber1(_ number1: Int, _ number2: Int) {

number1 + number2 // 이 때는 뒤에 이름 씀

}

sumNumber1(50, 100)

-----------------------------------------------

// In-Out parameters

// Input

var myScore = 60

func plusFive() {

myScore += 5

}

myScore // 60

plusFive() // 이것만 봐서는 무엇을 +5 한다는 것인지 모름

myScore // 65

 

==> 함수의 용도를 직관적으로 파악하고 싶을 때!

// In-Out parameters

// inout

 

func plusNewFive(score: inout Int) {

score += 5

}

 

plusNewFive(score: &myScore) // 70

myScore // 70

----------------------------------------------------------------------------------

22. Function_2

// Function Types

var someString: String = ""

func sayHello() {

print("hello")

}

sayHello // () -> ()

// () -> void와 같음

func plus(a: Int, b: Int -> Int) {

return a+b

}

func minus(a: Int, b: Int -> Int) {

return a-b

}

let inputValue1 = 4

let inputValue2 = 5

func selectSymbolButton(buttonStyle: String) { // 함수가 무슨 기능 하는지 이름 정확하게 설정하기!!!

if buttonStyle == "+" {

plus(a: inputValue1, b: inputValue2)

} else if buttonStyle == "-" {

minus(a: inputValue1, b: inputValue2)

}

}

// 위의 경우는 실행까지 완료하는 경우. 실행하지 않고 기능을 담기만 하는 방법은?

// Optional 사용!

var calc : ((Int, Int) -> Int)?

func selectSymbolButton2(buttonStyle: String) {

if buttonStyle == "+" {

calc = plus // calc에 plus기능을 담기만 함. 실행x

} else if buttonStyle == "-" {

calc = minus // calc에 minus기능을 담기만 함. 실행x

}

}

func showResult() {

calc?(inputValue1, inputValue2) // ? 꼭 붙여야 함!!

} // "="를 눌렀을 경우와 같이 미리 담아둔 함수 기능을 여기서 실행!!!

댓글을 작성해보세요.

채널톡 아이콘