1. ์กฐ๊ฑด๋ฌธ
1) if ๋ฌธ
: ์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ฐธ์ ๊ฐ๋ง ์คํํ๊ฒ ํ ์ ์๋ ๋ฌธ์ฅ
if ์ฐธ๊ณผ ๊ฑฐ์ง์ ํ๋จํ ์ ์๋ ๋ฌธ์ฅ {
//code
}
โ๏ธ์กฐ๊ฑด์ ์๋ฆฌ์๋ ํญ์ ์ฐธ๊ณผ ๊ฑฐ์ง์ ํ๋จํ ์ ์๋ ๋ฌธ์ฅ์ด ์์ผ ํ๋ค.
var number = 3
if number <= 10 {
print("\\(number)์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.")
}
// ์ถ๋ ฅ : 3์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
if๋ฌธ์ ์ข ๋ฅ
- if - else
number = 20
if number <= 10 {
print("\\(number)์ 10๋ณด๋ค ์๊ฑฐ๋ - ๊ฐ๋ค.")
} else {
print("\\(number)์ 10๋ณด๋ค ํฌ๋ค.")
}
// ์ถ๋ ฅ : 20์ 10๋ณด๋ค ํฌ๋ค.
- if - else if - else
number = 40
if number <= 10 {
print("\\(number)์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.")
} else if number >= 30 {
print("\\(number)์ 30๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค.")
} else {
print("\\(number)์ 10๋ณด๋ค ํฌ๊ณ 30๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.")
}
// ์ถ๋ ฅ : 40์ 30๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค.
- if - else if
number = 72
if number <= 10 {
print("\\(number)์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.")
} else if number >= 30 {
print("\\(number)์ 30๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค.")
}
// ์ถ๋ ฅ : 72์ 30๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค.
if๋ฌธ ์ฌ์ฉ์
- if๋ฌธ์์ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ ๋ฐ ์กฐ๊ฑด์ ์์๊ฐ ์ค์
- ์กฐ๊ฑด์ &&, ||๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ด ๊ฐ๋ฅ
- ์ค์ฒฉํด์ ์ฌ์ฉ๊ฐ๋ฅ
โ๏ธํ๋ก๊ทธ๋๋ฐ์์๋ ํ์ ๋ง ์ผ์นํ๋ฉด ์ธ์ ๋ ์ง ์ค์ฒฉ์ด ๊ฐ๋ฅ(2์ค, 3์ค ์๊ด์์)
2) switch ๋ฌธ
: ํํ์ ๋๋ ๋ณ์๋ฅผ (๋งค์นญ์์ผ) ๋ถ๊ธฐ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ์กฐ๊ฑด๋ฌธ
๐ ๋ถ๊ธฐ: ์ ํ์ ์ผ๋ก ์ฝ๋๋ฅผ ์คํ์ํค๋ ๊ฒ
switch ๋ณ์(ํํ์) {
case ๊ฐ1 :
//code
case ๊ฐ2, ๊ฐ3 :
//code
case ๊ฐ4 :
//code
fallthrough
default :
break
}
- ์ผ์ด์ค๋ฅผ ,(์ฝค๋ง)๋ก ์ฐ๊ฒฐ๊ฐ๋ฅ ( ๊ฐ2 ๋๋ ๊ฐ3 )
- ๋ง์ฝ case ๋ค์ ์ฝ๋๊ฐ ๋น์ด์๋ค๋ฉด ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ๊ฐ๋จ
- ๋ณ์์์ ๋์ถ๊ฐ๋ฅํ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๋ค๋ฃจ์ง ์๋ ๊ฒฝ์ฐ์ default๊ฐ ํ์
- ์คํํ๋ ค๋ ์ฝ๋๊ฐ ์์ ๋, switch๋ฌธ์์๋ break ํค์๋๋ฅผ ๋ฐ๋์ ์
๋ ฅํด์ผ ํจ.
( c์ธ์ด, ์๋ฐ์ ๋ค๋ฅด๊ฒ case๋ฌธ๋ง๋ค break๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ) - fallthrough ํค์๋๋ ๋งค์นญ๋ ๊ฐ์ ๋ํ ๊ณ ๋ ค์์ด ๋ค์ ์ผ์ด์ค๋ฅผ ์คํํ ์ ์์.
- switch๋ฌธ์์๋ ๋ถ๋ฑ์์ด ์๋ ๋ฒ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
โ๏ธ if๋ฌธ๋ณด๋ค ํ์ ์ ์ธ ๊ฒฝ์ฐ(์ผ์ด์ค๊ฐ ๋๋ ์ง ๊ฒฝ์ฐ)์ ์ฌ์ฉํ๋ค.
fallthrough ํค์๋
: case์ ๋งค์นญ๋ ๊ฐ์ ๊ด๊ณ์์ด ๋ฌด์กฐ๊ฑด ๋ค์ ๋ธ๋ก์ ์คํํ๋ค.
var num1 = 5
switch num1 {
case ..<10:
print("1")
fallthrough
case 10:
print("2")
fallthrough
default:
print("3")
}
/* ์ถ๋ ฅ :
1
2
3
*/
→ num1์ ์กฐ๊ฑด์ case ..<10์ ๋ง์กฑํ์ง๋ง, fallthrough ํค์๋์ ์ํด ๋ชจ๋ ์ผ์ด์ค๊ฐ ๋ค ์คํ๋๋ค.
switch๋ฌธ์ ๋ฒ์ ๋งค์นญ ( ํจํด ๋งค์นญ ์ฐ์ฐ์์ ๊ด๋ จ )
: case๋ฅผ ๋ฒ์๋ก ๊ตฌ์ฑํ๊ณ ์ถ์ ๋, ๋ถ๋ฑ์์ด ์๋ ๋ฒ์ ๋งค์นญ ์ฌ์ฉ
var num = 30
switch num {
case 0...50:
print("์ซ์์ ๋ฒ์: 0 ~ 50")
case 51...100:
print("์ซ์์ ๋ฒ์: 51 ~ 100")
default:
print("๊ทธ ์ธ์ ๋ฒ์")
}
// ์ถ๋ ฅ : ์ซ์์ ๋ฒ์: 0 ~ 50
→ Switch ๋ฌธ์ ๋ฒ์ ๋งค์นญ์ ๋ด๋ถ์ ์ผ๋ก ํจํด ๋งค์นญ์ผ๋ก ํ์ธํ๋ค. 0...50 ~= 30
var temperature = 19
switch temperature {
case ..<0:
print("์ํ - 0๋ ๋ฏธ๋ง")
case 0...18:
print("0๋ ์ด์ ๋ฌด๋ฅ์ง ์์ ๋ ์จ")
case 19...:
print("์ฌ๋ฆ ๋ ์จ")
default:
break
}
// ์ถ๋ ฅ : ์ฌ๋ฆ ๋ ์จ
if๋ฌธ๊ณผ switch๋ฌธ์ ๋น๊ต
- If ๋ฌธ์ ๋ ๊ฐ ์ด์์ ์กฐ๊ฑด์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ ์์ฉ ๋ฒ์๊ฐ ๋์ ( ๋ชจ๋ ์กฐ๊ฑด์ ๋ํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ )
- Switch ๋ฌธ์ If๋ฌธ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ , ๋ถ๊ธฐ ์ฒ๋ฆฌ์ ๋ง์ด ์ฌ์ฉ ๋จ.
3) switch ๋ฌธ์ ํ์ฉ
- switch ๋ฌธ์์์ ๋ฐ์ธ๋ฉ
var num = 6
switch num {
case let a:
print("์ซ์: \\(a)")
default:
break
}
// ์ถ๋ ฅ : 6
→ let a๋ผ๋ ์๋ก์ด ์์๋ก ๋ฐ์ธ๋ฉ์ ํ๋ ๊ฒ์ let a = num ์ด๋ผ๋ ์๋ฏธ์ ๊ฐ๋ค.
โ๏ธ๋ฐ์ธ๋ฉ์ ๋ค๋ฅธ ์๋ก์ด ๋ณ์/์์ ์๋ณ์๋ก ํ ๋น
var a = 7
let c = a
→ a๋ผ๋ ๋ณ์ ์๋ณ์๋ฅผ c๋ผ๋ ์๋ก์ด ์์ ์๋ณ์๋ก ํ ๋น ์ํค๋ ๊ฒ
- switch๋ enum๊ณผ ๊ด๊ณ๊ฐ ๊น๋ค.
enum Day {
case monday, tuesday, wednesday, thursday, friday, saturday, sunday
}
func activities(for day: Day) {
switch day {
case .monday:
print("์")
case .tuesday:
print("ํ")
case .wednesday:
print("์")
case .thursday:
print("๋ชฉ")
case .friday:
print("๊ธ")
case .saturday:
print("ํ ")
case .sunday:
print("์ผ")
}
}
activities(for: .monday)
activities(for: .wednesday)
// ์ถ๋ ฅ :
// ์
// ์
→ enum ํ์ ์ Switch์ ๋ณ์๋ก ์ ์ฉํ ๋๋ default๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
switch๋ฌธ๊ณผ where์
: switch๋ฌธ์์ ์กฐ๊ฑด์ ํ์ธํ๋ ๋ฐฉ์
num = 7
switch num {
case let x where x % 2 == 0:
print("์ง์ ์ซ์: \\(x)")
case let x where x % 2 != 0:
print("ํ์ ์ซ์: \\(x)")
default:
break
}
→ ๋น๊ตํ๊ธฐ ์ํด let x๋ผ๋ ์๋ก์ด ์์์ ๋ฐ์ธ๋ฉํ ๋ค์, ์กฐ๊ฑด์ ์ ์ฌ์ฉํ๋ค.
switch num {
case let n where n <= 7:
print("7์ดํ์ ์ซ์: \\(n)")
default:
print("๊ทธ ์ด์ธ์ ์ซ์")
}
→ ์ด๋ ๊ฒ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๋ฉด, ๋ฒ์ ์ฐ์ฐ์๋ case์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
switch num {
case var x where x > 5:
x = 7
print(x)
default:
print(num)
}
→ ์์ let์ด ์๋ ๋ณ์ var๋ก ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฅํ๋ค. case๋ด์์ ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์ ์ฐ์ธ๋ค.
โญ๏ธ whereํค์๋๋ ์กฐ๊ฑด์ ํ์ธํ๋ ํค์๋