일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 노드 버전
- 내일의주인공은나야나
- 프라모델
- 샐러드좋아
- Git
- useMemo
- javascript
- 너무무서워
- 서브웨이
- 오늘양짱많음
- 기본데이터타입
- styled-components install error
- 정처기
- 카드지갑
- node version update
- 문자열보간법
- 찐대졸
- 취미
- 전복과붕어빵
- ERESOLVE
- 로스트치킨샐러드
- 자고싶다
- 가죽공예
- 상수와변수
- 후록스
- 아이행복해
- GitLab
- 러닝자바스크립트
- 면담끝
- 커링
- Today
- Total
당근농장
[Swift] 스위프트 기초 4 - 조건문, 반복문 본문
코딩을 하다 보면... 거의 모든 함수가 조건문과 반복문의 연속이라고 해도 과언이 아니다 ㅋㅋ;;
일 끝내고 포스팅 쓰는 거라 열어둔 파일이 있는데 ㅋㅋㅋ 잠깐 보니 그냥 뭐
조건문
조건문
조건문
...
반복문
...
각 상황에 맞게 코드를 짜야하다 보니 어쩔 수 없는 것 같다 ㅎㅎ;
그만큼 중요하단 거지 ~~~~~ 중요중요중요 ⭐⭐⭐⭐
여튼 스위프트에서의 조건문, 반복문 역시 다른 언어의 문법과 크게 다르지 않다.
기본적인 키워드는 c, c++, java, js등과 같이 거의 비슷한 편?
(아 근데 switch 구문은 좀 많이 좋은 편이다 ㅋㅋ 짱짱 👍🏻)
자세한 건 아래에서 다뤄보도록 하겠음 ㅎㅎ
조건문
1️⃣ if-else
어디에서나 볼 수 있는 가장 기본적인 조건문 형태이다.
하지만 다른 언어와 달리 꼭 지켜야 할 규칙이 하나 있다.
if 뒤의 조건 값에는 항상 Bool 타입 값만 위치해야 한다.
다시 말해 조건에 Int 타입이든 뭐든 넣는 거 자체가 불가능하다는 것이다.
// 다른 언어에서는 가능하지만 스위프트에서는 불가능하다.
// if 1 { }
Bool이 아닌 다른 타입을 넣으면 무조건 컴파일 에러!!!
그러니 꼭꼭 지키도록 하자. 무조건 Boooooooooooool ~~~~~~~
let someInteger = 100
if someInteger < 100 {
print("100 미만")
} else if someInteger > 100 {
print("100 초과")
} else {
print("100")
} // 100
아. 그리고 예시에서 볼 수 있듯이 스위프트에서 조건을 감싸는 소괄호는 선택 사항이다.
뭐... 쓰는 건 자유지만... 굳이? ㅎㅎㅋㅋ
솔직히 () 쓰는 거 가끔 귀찮을 때도 있는데 그냥 안 쓰는 게 맘 편함 ㅎㅎ
2️⃣ switch 구문
아까도 잠깐 언급했지만, 스위프트의 switch 구문은 다른 언어에 비해 굉장히 강력하다.
기본적으로 사용하던 정수타입의 값만 비교하는 것이 아니라
대부분의 스위프트 기본 타입을 지원하며, 다양한 패턴과 응용이 가능하다.
기본 형태는 다음과 같다.
switch 비교값 {
case 패턴:
/* 실행 구문 */
default:
/* 실행 구문 */
}
기본 형태에서도 볼 수 있듯이 default 구문은 말 그대로 default다.
따라서 매우 한정적인 값(ex. enum의 case 등)이 비교 값이 아닌 한 default 구문은 ⭐반드시⭐ 작성해야 한다.
또한, 명시적 break를 하지 않아도 자동으로 case마다 break 되고,
만약 break를 원하지 않는다면 fallthrough 키워드를 사용하여 break를 무시할 수 있다.
(그냥 맨 마지막에 fallthrough를 붙이면 된다 ㅋ)
아 그리고, js에서는 여러 case에 같은 로직을 타게 만들고 싶을 때
case 0:
case 1:
print("0 또는 1")
이런 식으로 여러 개의 case를 나열했는데,
스위프트에서는 간단히 쉼표(,)를 사용해서 하나의 case에 여러 패턴을 명시할 수 있다.
// 범위 연산자를 활용하면 더욱 쉽고 유용하다.
switch someInteger {
case 0:
print("zero")
case 1..<100:
print("1~99")
case 100:
print("100")
case 101...Int.max:
print("over 100")
default:
print("unknown")
} // 100
// 정수 외의 대부분의 기본 타입을 사용할 수 있다.
switch "carrot" {
case "rabbit":
print("rabbit")
case "carrot":
print("carrot")
fallthrough
case "cookie":
print("cookie!!")
default:
print("unknown")
}
// carrot
// cookie!!
반복문
1️⃣ for-in 구문
기존 언어의 for-each 구문과 유사하다.
tmi.
요즘엔 js를 많이 다루고 있는데, js하면서 for-each 구문을 많이 사용한 것 같당!
var integers = [1, 2, 3]
for integer in integers {
print(integer)
}
// 1
// 2
// 3
아. key와 value를 가지고 있는 Dictionary를 for-in 구문에서 사용하게 되면
이터레이션 아이템으로 튜플이 들어온다.
let people = ["yagom": 10, "eric": 15, "mike": 12]
for (name, age) in people {
print("\(name): \(age)")
}
2️⃣ while 구문
while은 뭐. 다른 언어와 다른 게 거의 없다.
그냥 아까도 말했듯이 조건 값은 꼭 Bool 타입이어야 한다는 점만 주의!
while integers.count > 1 {
integers.removeLast()
}
// 반복문이 끝난 이후 integers에는 1만 존재한다.
3️⃣ repeat-while 구문
기존 언어의 do-while 구문이랑 형태/동작이 유사하다.
그냥 do -> repeat 로 바뀌었다고 생각하면 됨!
repeat {
integers.removeLast()
} while integers.count > 0
// 반복문이 끝난 이후 integers는 빈 배열이다.
출처:
https://www.boostcourse.org/mo122/lecture/11235?isDesc=false
iOS 프로그래밍을 위한 스위프트 기초
부스트코스 무료 강의
www.boostcourse.org
아 그리고 눈치챈 사람들도 있겠지만 마크다운 사용하는 건 포기했다;;
마크다운이 편하긴 한데 티스토리에서 기본 모드 <-> 마크다운 호환이 잘 안 되는 것 같다.
둘 사이를 왔다 갔다 하면 항상 깨지고 git에서 잘 사용했던 문법이 여기선 제대로 적용이 되지 않는 경우도 많았다. ㅠ
그냥 마크다운 모드에서 사용하는 ` ` < 이거 빼고는 다 기본 모드에서 지원하니..
기본 모드로 그냥 써야겠다.
시간 나면 다른 블로그 다시 찾아봐야겠다.
'개발 > Swift' 카테고리의 다른 글
[Swift] 스위프트 기초 3 - 함수 기본, 함수 고급 (0) | 2021.06.01 |
---|---|
[Swift] 스위프트 기초 2 - Any/AnyObject/nil, 컬렉션 타입(Array/Dictionary/Set) (0) | 2021.03.31 |
[Swift] 스위프트 기초 1 - 문자열 보간법, 상수와 변수, 기본 데이터 타입 (0) | 2021.03.10 |