ForEach, for loop, Range, While

Updated:

🔷 Collection Type

https://docs.swift.org/swift-book/_images/CollectionTypes_intro_2x.png

🔷 Swift forEach (반복문)

// Collection type : 데이터를 모아두는것
// Array, Set, Dictonary

// Array 반복 돌리기 forEach
var myArray : [Int] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

// myArray 에 가지고 있는 갯수만큼 반복을 순서대로 돌린다는 것임
// 각 element 를 item 이라는 변수에 담아서 반복을 돌리겠다는 의미임
for item in myArray {
	print("item: \(item)")
}

image

🔶 특정 조건안에서 반복 돌리기

// 특정 조건을 입력해서 반복 돌리기 : array 안에 elemental 이 5보다 큰것만 출력하기
for item in myArray where  item > 5{
	print("5보다 큰수: \(item)")
}

image

// 특정 조건을 입력해서 반복 돌리기 : array 안에 elemental 이 짝수만 출력
for item in myArray where  item % 2 == 0{
	print("짝수: \(item)")
}

image

🔷 Swift for (반복문)

// Swift 에서 for 반복문을 표현하는 방법
// 0...5 은 0, 1, 2, 3, 4, 5 를 가리키는 Range
// 0...<5 은 5보다 작을때까지를 가리킴

for i in 0...5 {
	print("for 반복:\(i)")
	// for 반복:0
	// for 반복:1
	// for 반복:2
	// for 반복:3
	// for 반복:4
	// for 반복:5
}

// where 을 사용해서 마찬가지로 조건을 넣을 수 있음
// 0~4까지 반복에서 짝수인 수만 출력
for i in 0..<5 where i % 2 == 0{
	print("4까지 짝수만 출력:\(i)")
	// 4까지 짝수만 출력:0
	// 4까지 짝수만 출력:2
	// 4까지 짝수만 출력:4
}
// 빈배열 생성
var randomInts: [Int] = []

// 변수를 따로 설정하지 않으면 _ 언더바를 주로 사용한다
// 0~9 까지의 index 범위에서 random 숫자 가져오기
for _ in 0..<10 {
	// 0~100 까지의 범위에서 random 숫자를 가져옴
	let randomNumber = Int.random(in: 0...100)
	randomInts.append(randomNumber)
}

print("randomInt 10개: \(randomInts)") // randomInt 10개: [46, 78, 66, 97, 30, 97, 80, 17, 89, 33]

🔷 foreach 에서 인덱스도 함꼐 가져오기

let myFriendsArray = ["철수", "영희", "수진", "제임스", "마크"]

// foreach 반복문에서
// enumerated 를 통해
// 해당하는 값의 index 를 가져 올 수 있습니다
// 인덱스, 가져온 아이템
for (friendIndex, friendItem) in
			myFriendsArray.enumerated() {
	print("\(friendIndex): \(friendItem)")
}

image

🔷 Range

// 0에서 2까지 -> 0, 1, 2
let myRange = 0...2

// 0에서 2보다 작을때까지 -> 0, 1
let myRange2 = 0..<2
let myArray = ["Jacob", "Emma", "James", "Mike"]

// Range 를 통해 범위 설정이 가능합니다
print(myArray[myRange]) // ["Jacob", "Emma", "James"]

for index in myRange {
	print(myArray[index])
}
/*
 Jacob
 Emma
 James
 */

for index in myRange2 {
	print(myArray[index])
}
/*
 Jacob
 Emma
 */

🔶 Range 에서 패턴 매칭연산자

let statusCode = 403

// 400 ~ 499 range 에 status 코드가 포함된다면
if (400..<500).contains(statusCode) {
	print("\(statusCode) 가 들어 왔음") // 403 가 들어 왔음
}

// 패턴 매칭 연산자
// ~= 를 통해 위와 같은 로직인데 간결하게 표현이 가능함
if 400..<500 ~= statusCode {
	print("\(statusCode) 를 패턴 매칭 연산자 통해서 받음") // 403 를 패턴 매칭 연산자 통해서 받음
}

🔶 매칭연산자 오버로딩

// 패턴 매칭 오버로드
// 문자 숫자가 일치 되는지 여부 추가!
func ~= (pattern: String, value: Int) -> Bool {
	return pattern == "\(value)"
}

// 패턴 ~= 값
// 패텅 매칭 연산 오버로드로
// 입맛에 맞게 연산기능을 추가할 수 있습니다
if "20" ~= 20 {
	print("글자와 숫자 일치!")
} else {
	print("글자와 숫자 불일치..")
}
// 글자와 숫자 일치

🔷 While 반복문

var count = 0
let max = 5

// 5보다 작을 때까지 반복한다
// while 을 통해 특정 조건일 경우
// 계속 반복 합니다
while count < max {
	count += 1
	print("count: ", count)
}
/*
 count:  1
 count:  2
 count:  3
 count:  4
 count:  5
 */

🔶 Repeat while 반복문

var count = 6
let max = 5

// 반복한다
// 일단 실행함
// 다른 언어 에서의 do while 과 비슷
repeat {
	count += 1
	print("count: ", count)
} while count < max // 5보다 작을 때까지
print("\(count) 까지 셌다")

// count:  7
// 7 까지 셌다

// while 문에서는 조건을 먼저 보고
// 들어가기 때문에 조직을 안탑니다
while count < max {
	count += 1
	print("count: ", count)
}


Reference

Swift official docs Collection type- https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html

개발하는 정대리 스위프트 기초 문법 - 2일차 / foreach 반복문 - https://www.youtube.com/watch?v=EXtpt5Skzck&list=PLgOlaPUIbynoqbQw_erl3L2w7vfOTCtFD

개발하는 정대리 스위프트 기초 문법 - 4일차 / for 반복문 - https://www.youtube.com/watch?v=roBfNPlckWs

Categories:

Updated:

Leave a comment