ForEach, for loop, Range, While
Updated:
🔷 Collection Type
🔷 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)")
}
🔶 특정 조건안에서 반복 돌리기
// 특정 조건을 입력해서 반복 돌리기 : array 안에 elemental 이 5보다 큰것만 출력하기
for item in myArray where item > 5{
print("5보다 큰수: \(item)")
}
// 특정 조건을 입력해서 반복 돌리기 : array 안에 elemental 이 짝수만 출력
for item in myArray where item % 2 == 0{
print("짝수: \(item)")
}
🔷 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)")
}
🔷 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
Leave a comment