if
스위프트도 조건문이 있습니다
let first: Int = 3
let second: Int = 1
if(first > second){
print("\\(first) > \\(second)")
}else if(first < second){
print("\\(first) < \\(second)")
}else{
print("\\(first) == \\(second)")
}
스위프트와 C언어의 차이점은 별거 없습니다. 스위프트에서는 if문에서 소괄호를 써도 되고 안 써도 상관없습니다.
//응용
let IntNumber1: Int = 2;
let IntNumber2: Int = 3;
let IntNumber3: Int = 0;
var Temp: Int = 0;
if(IntNumber1 > IntNumber2 ){
Temp = (IntNumber2 > IntNumber3) ? IntNumber2 : IntNumber3
}
else if(IntNumber2 > IntNumber1){
Temp = (IntNumber1 > IntNumber3) ? IntNumber1 : IntNumber3
}
else{
Temp = (IntNumber1 > IntNumber2) ? IntNumber1 : IntNumber2
}
print(Temp)
- 실행 결과
- 2
위 코드는 중간 값을 구하는 코드입니다.
var isDoeMode = true
if(isDorkMode)
{
print("다크모드 입니다.")
} else {
print("다크모드가 아닙니다.")
}
이렇게 굳이 조건식을 쓰지 않아도 if문을 사용할 수 있습니다
let age = 10
if age > 20 {
print("성인입니다")
}else{
print("미성년입니다")
}
if age >= 10 && age < 20 {
print("10대 입니다")
}else if age > 20 && age < 30 {
print("20대 입니다")
}else if age > 20 && age < 30 {
print("30대 입니다")
}else if age > 20 && age < 30 {
print("40대 입니다")
}else {
print("......")
}
switch
switch문은 swift에서는 많이 달라진 언어입니다
c언어는 break를 써주지 않으면 무한루프가 실행됩니다
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
switch(a)
{
case 1:
printf("hello");
case 2:
printf("hi");
case 3:
printf("good");
default:
printf("wow");
}
return 0;
}
- 실행 결과
- hellohigoodwow
원하는 값은 1이었는데 1부터 default값까지 전부 다 출력한다 (braek를 쓰면 딱 끝난다)
하지만 우리 스위프트는 그런 거 없다 스위프트는 원하는 값을 받으면 break가 없어도 실행된다
let SwiftSwitch: Int = 1;
switch(SwiftSwitch){
case 1:
print("hello")
case 2:
print("hi")
case 3:
print("good")
default:
print("wow")
}
- 실행 결과
- hello
원하는 값을 넣어주면 break가 없어도 잘 실행되는 것을 볼 수 있다
하지만 스위프트는 나름에 rule가 있습니다 switch문을 작성할 때는 무조건 default를 무조건 써주어야 합니다
아! 만약 난 c언어처럼 연속 구문을 쓰고 싶다~하시면 fallthrough를 사용하면 됩니다
let interValue: Int = 5
switch(interValue){
case 0:
print("Value == zero")
case 1...10:
print("Value == zero")
fallthrough
case Int.min..<0, 101..<Int.max:
print("Value < 0 or Value > 100")
break
default:
print("10 < Value <= 1~10")
}
- 실행 결과
- Value == zero Value < 0 or Value > 100
참고 = 1... 10은 1부터 10까지 라는 뜻|| Int.min.. <0 = interValue는 0보다 크다 ||
101.. < Int.max= interValue는 0보다 작다
위에서 fallthrough를 사용하였기 때문에 break를 사용하여야 한다
swift에서 switch에서는 부동소수까지 표현이 가능하다.
let doubleValue: Double = 3.0
switch(doubleValue) {
case 0:
print("Value == zero")
case 1.5...10.5:
print("1.5 <= Value <= 10.5")
default:
print("Value == \\(doubleValue)")
}
swift에서는 꼭 case 뒤에 숫자가 아니어도 상관없습니다.
let stringValue: String = "Liam Neeson"
switch stringValue {
case "junha":
print("He is junha")
case "Jay":
print("He is Jay")
case "Jenny","Joker","Nova":
print("He or She is \\(stringValue)")
default:
print("\\(stringValue) said 'I don't know who you are'")
}
- 실행 결과
- Liam Neeson said 'I don't know who you are'
이처럼 스위프트에서는 swift에서의 switch에서는 문자열 및 다양한 기호를 이렇게 넣을 수 있습니다.
하지만 c언어에서는 case를 사용하고 모든 것을 연속 출력허기 위해서
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
switch(a)
{
case 1:
case 2:
case 3:
printf("hello");
default:
printf("hi");
break;
}
return 0;
}
이런 식에 코드를 사용하여서 1,2,3의 값을 똑같이 받을 수 있다.
하지만 위에서 말했듯 swift에는 1... 3 있기 때문에 case에 빈 공간을 둘 필요가 없다 swift에는 빈공간을 두면 오류가 발생한다
let stringValue: String = "Android"
switch stringValue {
case "Junha":
print("he is junha")
case "ios":
print("He is ios");
case "js":
fallthrough
case "html":
fallthrough
case "C":
print("He or She is \\(stringValue)")
default:
print("\\(stringValue) said 'I don't know who you are.'")
}
- 실행 결과
- Android said 'I don't know who you are.'
이렇게 응용도 가능합니다 ^^
typealias NameAge = (name: String, age: Int)
let tupleValue: NameAge = ("junha",99)
switch(tupleValue){
case ("junha",99):
print("정확히 맞췄습니다!")
default:
print("누굴 찾나요?")
}
- 실행 결과
- 정확히 맞췄습니다!
- 해석
- NameAge값에 튜플 값을 입력해 주면 tupleValue를 입력해주면 자동으로 입력됩니다. 값이 맞지 않으면 default 값으로 넘어가서 실행됩니다.
튜플을 사용하여서 switch를 사용할 수 있습니다
typealias NameAge = (name: String, age: Int)
let tupleValue: NameAge = ("junha",18)
switch tupleValue {
case ("junha",17):
print("정확히 맞췄습니다!")
case ("junha",let age):
print("이름만 맞았습니다. 나이는 \\(age)가 아닙니다")
case(let name, 17):
print("나이는 맞았습니다. 이름은 \\(name)님이 아닙니다")
default:
print("누굴 찾나요?")
}
나중에 switch를 사용하면 회원가입 어플을 만들 수 있을까.. 합니다.
참고로 스위프트에서 default를 사용할 필요가 없어도 무조건 default는 꼭 사용해야 합니다.
열거형을 쓰는 방법도 있습니다.
주로 주어진 이름 중에 선택합니다.
enum Menu {
case chicken
case pizza
}
let lunchMenu: Menu = .chicken
switch lunchMenu {
case .chicken:
print("반반으로 주세요.")
case .pizza:
print("핫소스 많이 주세요")
case _: //case default와 같은 의미 입니다
print("오늘 메뉴가 뭐죠?")
}
for-in
for in은 반복문이다 c언어와 다른 점은 for문만 쓰는 것이 아니라 조건식이 필요하기 때문에 where를 사용한다
var myArray : [Int] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for item in myArray {
print("item: \\(item)")
}
- 실행 결과
- item: 0 item: 1 item: 2 item: 3 item: 4 item: 5 item: 6 item: 7 item: 8 item: 9 item: 10
이렇게 배열에 있는 값을 출력할 수 있다
var myArray : [Int] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for item in myArray where item > 5{
print("5 보다 큰 수: \\(item)")
}
- 실행결과
- 5 보다 큰 수: 6 5 보다 큰 수: 7 5 보다 큰 수: 8 5 보다 큰 수: 9 5 보다 큰 수: 10
where를 사용하여서 조건을 써주는 방법도 있다.
예)
for item in myArray where item % 2 == 0{
print("짝수: \\(item)")
}
- 실행 결과
- 짝수: 0 짝수: 2 짝수: 4 짝수: 6 짝수: 8 짝수: 10
예)
for item in myArray where item % 2 == 1{
print("홀수: \\(item)")
}
- 실행 결과
- 홀수: 1 홀수: 3 홀수: 5 홀수: 7 홀수: 9
'Swift > 문법' 카테고리의 다른 글
[Swift] 클래스와 구조체 (0) | 2023.03.18 |
---|---|
[swift] 함수 (1) | 2023.03.16 |
[swift] Swift 데이터 타입 (0) | 2023.03.14 |
[구조 패턴] Decorator (0) | 2023.03.01 |
[swift] try , try?, try! (1) | 2023.02.23 |