Skip to content

Latest commit

ย 

History

History
325 lines (277 loc) ยท 7.97 KB

File metadata and controls

325 lines (277 loc) ยท 7.97 KB

ํ๋ฆ„ ์ œ์–ด

์กฐ๊ฑด๋ฌธ : ํ”„๋กœ๊ทธ๋ž˜๋ฐ์‹œ ํŠน์ • ์กฐ๊ฑด์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ƒํ™ฉ์ด ์ƒ๊ธธ ๋•Œ ์‚ฌ์šฉ

๋ฐ˜๋ณต๋ฌธ : ํŠน์ • ๋ช…๋ น์–ด๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

์Šค์œ„ํ”„ํŠธ์˜ ํ๋ฆ„ ์ œ์–ด ๊ตฌ๋ฌธ์—์„œ๋Š” ์†Œ๊ด„ํ˜ธ(())๋ฅผ ๋Œ€๋ถ€๋ถ„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ.

์ค‘๊ด„ํ˜ธ๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์—†์Œ

์กฐ๊ฑด๋ฌธ

ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” ์„ ํƒ๋ฌธ

ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ์„ ํƒ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ด

๋Œ€ํ‘œ์ ์ธ ์กฐ๊ฑด๋ฌธ : if-else ๋ฌธ๊ณผ switch ๋ฌธ

๋ณดํŽธ์ ์œผ๋กœ if-else๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋‚˜, swift์—์„œ๋Š” switch-case๊ฐ€ ๊ฐ•ํ™”๋˜์—ˆ์Œ

if-else ๋ฌธ

์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์šฐ if๋ฌธ ๋Œ€๊ด„ํ˜ธ ์•ˆ์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ

๋งŒ์•ฝ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ else ๋ฌธ ๋Œ€๊ด„ํ˜ธ ์•ˆ์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ

if ์กฐ๊ฑด {
	//์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋ฉด ์‹คํ–‰
} else {
	//์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜์ง€ ์•Š์„ ๋•Œ ์‹คํ–‰
}

์กฐ๊ฑด๊ฐ’์€ ์ฐธ, ๊ฑฐ์ง“์„ ๋‚˜ํƒ€๋‚ด๋Š” Bool๊ฐ’์œผ๋กœ ํ‘œํ˜„

else if๋ฌธ

์ถ”๊ฐ€ ์กฐ๊ฑด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Œ

if ์กฐ๊ฑด1 {
	//์กฐ๊ฑด1์ด ๋งŒ์กฑ๋˜๋ฉด ์‹คํ–‰
} else if ์กฐ๊ฑด2 {
	//์กฐ๊ฑด1์ด ๋งŒ์กฑ๋˜์ง€ ์•Š๊ณ , ์กฐ๊ฑด2๊ฐ€ ๋งŒ์กฑ ๋  ๋•Œ ์‹คํ–‰
} else {
	// ์กฐ๊ฑด๋“ค ๋ชจ๋‘ ๋งŒ์กฑ๋˜์ง€ ์•Š์„ ๋•Œ ์‹คํ–‰
}

์กฐ๊ฑด2๋Š” ์กฐ๊ฑด1์ด ๊ฑฐ์ง“์ผ ๋•Œ ์‹คํ–‰

๋งˆ์ง€๋ง‰ else๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ

์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ

๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์˜ ๊ฒฐ๊ณผ๊ฐ€ bool๊ฐ’์œผ๋กœ ๋‚˜์™€์•ผ ํ•จ.

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋กœ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์˜ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•จ.

์—ฐ์‚ฐ์ž

์‚ฐ์ˆ ์—ฐ์‚ฐ์ž

  • ์ˆ˜ํ•™์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์Œ
+ : ๋”ํ•˜๊ธฐ
- : ๋นผ๊ธฐ
* : ๊ณฑํ•˜๊ธฐ
/ : ๋‚˜๋ˆ„๊ธฐ
% : ๋‚˜๋จธ์ง€

๋น„๊ต์—ฐ์‚ฐ์ž

== : ๊ฐ™๋‹ค				A == B
>= : ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค		   A >= B
<= : ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค		   A <= B
>  : ํฌ๋‹ค			    A > B
<  : ์ž‘๋‹ค			    A < B
!= : ๊ฐ™์ง€ ์•Š๋‹ค		   A != B

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

&& : AND  -> A && B --> A์กฐ๊ฑด์ด ์ฐธ์ด๊ณ , B์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์ฐธ์ด๋‹ค.
|| : OR   -> A || B ==> A์กฐ๊ฑด์ด๋‚˜,B์กฐ๊ฑด ๋‘˜์ค‘์— ํ•˜๋‚˜๊ฐ€ ์ฐธ์ด๋ฉด ์ฐธ์ด๋‹ค.
!  : NOT  -> !A     ==> A ์กฐ๊ฑด์˜ ๋ฐ˜๋Œ€

์ถ”๊ฐ€ ์—ฐ์‚ฐ์ž

๋ณตํ•ฉ ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž		์˜ˆ์ œ			 ์„ค๋ช…
-------------------------------------
+=		 a += 1			a์— ๊ฐ’์„ ๋”ํ•˜๊ธฐ
-=		 b -= 2			b์— ๊ฐ’์„ ๋นผ๊ธฐ

*, /, % ๋„ ๊ฐ€๋Šฅ

๋ฒ”์œ„ ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž			์˜ˆ์ œ			์„ค๋ช…
-------------------------------------------
a...b		 3...10		   a~b๊นŒ์ง€์˜ ์ˆซ์ž
a..<b		 0..<10		   a~b๊นŒ์ง€ ์ˆซ์ž์ค‘ b๋Š” ํฌํ•จ์•ˆํ•จ

1... : 1์ด์ƒ์˜ ๋ชจ๋“  ์ˆ˜

1.2 ..< 1.5 --> 1.2, 1,3, 1,4 (o), 1.12 (x)

identity ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž		  ์˜ˆ์ œ						์„ค๋ช…
--------------------------------------------------------------------------
===		 	person2 === person1		person1๊ณผ person2๋Š” ๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.
!==		 	person2 !== person1		person1๊ณผ person2๋Š” ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.

๊ฐ์ฒด๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธ, reference๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธ

์‚ผํ•ญ์—ฐ์‚ฐ์ž

question? answer1 : answer2
-> question์ด ์ฐธ์ด๋ฉด answer1 ์‹คํ–‰, ๊ฑฐ์ง“์ด๋ฉด answer2 ์‹คํ–‰
let age = 20
var result: String = age > 19 ? "์„ฑ๋…„" : "๋ฏธ์„ฑ๋…„"

์กฐ๊ฑด์˜ ์˜ˆ

func printGeneration(age:Int)
 {
	if (age >= 30) { 
		print(โ€œ30๋Œ€ ์ด์ƒ")
    } else if(age >= 20) {
		print("20๋Œ€") 
	} else {
	 	print("๋ฏธ์„ฑ๋…„์ž")
	} 
}

// ์‹คํ–‰๊ฒฐ๊ณผ
printGeneration(10);
>> ๋ฏธ์„ฑ๋…„์ž
printGeneration(40);
>> 30๋Œ€ ์ด์ƒ
printGeneration(20);
>> 20๋Œ€

์กฐ๊ฑด๋ฌธ ์˜ˆ์‹œ

//์˜ˆ์‹œ 1
func check(name compareName: String) {
	if compareName == "์ฃผ์˜๋ฏผ" {
		print(โ€œ์ฃผ์˜๋ฏผ ์ž…๋‹ˆ๋‹ค.โ€) 
	} else {
		print("์ฃผ์˜๋ฏผ์ด ์•„๋‹™๋‹ˆ๋‹ค")
	} 
}

// ์˜ˆ์‹œ 2
func isEven(number:Int) -> Bool
{
	if(number%2 == 0)
	{
		//์ง์ˆ˜ 
		return true
	} else {
		//ํ™€์ˆ˜
		return false
	} 
}

์กฐ๊ฑด์˜ ์กฐํ•ฉ

  1. or์กฐํ•ฉ(||): ์กฐ๊ฑด๋“ค ์ค‘ ํ•œ๊ฐœ๋งŒ ์ฐธ์ด์–ด๋„ ์ „์ฒด ์กฐ๊ฑด์ด ์ฐธ์ž„
  2. and์กฐํ•ฉ(&&) : ์กฐ๊ฑด๋“ค ๋ชจ๋‘ ์ฐธ์ด์—ฌ๋งŒ ์ „์ฒด ์กฐ๊ฑด์ด ์ฐธ์ž„
  3. not(!) : ์กฐ๊ฑด ๊ฒฐ๊ณผ์˜ ๋ฐ˜๋Œ€๊ฐ’

switch ๊ตฌ๋ฌธ

  • ํŒจํ„ด ๋น„๊ต๋ฌธ
  • ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๋งค์นญ๋˜๋Š” ํŒจํ„ด์˜ ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋จ

switch ๋ฌธ๋ฒ•

  • Swift์—์„œ switch๋ฌธ์€ break๋ฌธ์ด ํ•„์š” ์—†์Œ (C์™€ ๋‹ค๋ฅธ์ )
switch some value to consider
{ 
case value 1: 
	respond to value 1 
case value 2, 
	  value 3: 
	respond to value 2 or 3 
default:  
	otherwise, do something else
}

"default: " - ํ•ญ์ƒ ์žˆ์–ด์•ผ ๋œ๋‹ค! ์œ„์˜ case๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•จ

  • ๊ฐ ์กฐ๊ฑด์˜ ์ƒํƒœ๋Š” case ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋‚˜ํƒ€๋‚ผ์ˆ˜ ์žˆ์Œ.
  • ๊ฐ case ์ƒํƒœ ๋์—๋Š” ์ฝœ๋ก ( : )์„ ์ž‘์„ฑํ•ด์„œ ๋งค์นญ ํŒจํ„ด์„ ์ข…๋ฃŒ.
  • ์—ฌ๋Ÿฌ๊ฐœ์˜ case๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ฝค๋งˆ( , )๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ์ถ”๊ฐ€ ํ• ์ˆ˜ ์žˆ์Œ.
  • ๊ฐ case๋Š” ๋ถ„๊ธฐ๋กœ ์‹คํ–‰๋˜๋ฉฐ ๋งค์นญ๋œ ํ•ด๋‹น case๋ฌธ์ด ์ข…๋ฃŒ๋˜๋ฉด switch ๋ฌธ์„ ์ข…๋ฃŒ์‹œํ‚ด.
  • ๊ฐ case์˜ ์ƒํƒœ๋Š” switch ๋ฌธ์˜ value๊ฐ’์— ๋งค์นญ๋œ ์ง€์ ์„ ๊ฒฐ์ •ํ•จ, ๋ชจ๋“  value์— ๋Œ€ํ•ด ๋งค์นญ ๋˜์–ด์•ผ ํ•จ. ๋งŒ์•ฝ ๋งค์นญ๋˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด default ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ๋งค์นญ๊ฐ’์„ ์„ค์ •ํ•จ, defaultํ‚ค์›Œ๋“œ๋Š” ๋งˆ์ง€๋ง‰์— ๋ฐฐ์น˜๋จ.

swiftch ์˜ˆ์ œ

func sampleSwitch(someCharacter:Character)
{
    switch someCharacter {
    case "a":
        print("The first letter of the alphabet")
    case "z":
        print("The last letter of the alphabet")
    default:
        print("Some other character")
    }
}

Interval Matching

  • switch๋ฌธ์˜ ์ƒํƒœ๋Š” ๋‹จ์ˆœ value ๋งค์นญ์„ ๋„˜์–ด ์ข€๋” ๋‹ค์–‘ํ•œ ํŒจํ„ด์„ ํ†ตํ•ด ๋งค์นญ์ด ๊ฐ€๋Šฅ
  • interval matching์€ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ๋งค์นญ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

interval matching example

func interSwitch(count:Int)
 {
     let countedThings = "moons orbiting Saturn"
     let naturalCount: String
     switch count {
     case 0:
         naturalCount = "no"
     case 1..<5:
         naturalCount = "a few"
     case 5..<12:
         naturalCount = "several"
     case 12..<100:
         naturalCount = "dozens of"
     case 100..<1000:
         naturalCount = "hundreds of"
     default:
         naturalCount = "many"
     }
     print("There are \(naturalCount) \(countedThings).")
 }

Tuple Matching

  • ํŠœํ”Œ์„ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ value๋ฅผ ๋™์‹œ์— ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•œ ๋งค์นญ์€ ์™€์ผ๋“œ ์นด๋“œ(_)๋ฅผ ํ†ตํ•ด ๋งค์นญ ๊ฐ€๋Šฅ

Tuple example

     func getPoint(somePoint:(Int,Int))
     {
         switch somePoint {
         case (0, 0):
             print("\(somePoint) is at the origin")
         case (_, 0):
             print("\(somePoint) is on the x-axis")
         case (0, _):
             print("\(somePoint) is on the y-axis")
         case (-2...2, -2...2):
             print("\(somePoint) is inside the box")
         default:
             print("\(somePoint) is outside of the box")
         }
}

_ : wildcard ๋ชจ๋“  ์กฐ๊ฑด์ด ๋‹ค ๋จ

๊ฐ’ ๋ฐ”์ธ๋”ฉ

  • case ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž„์‹œ ๊ฐ’์œผ๋กœ ๋งค์นญ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

๊ฐ’ ๋ฐ”์ธ๋”ฉ ์˜ˆ์ œ

   func getPoint(somePoint:(Int,Int))
     {
         switch somePoint {
         case (0, 0):
             print("\(somePoint) is at the origin")
         case (let x, 0):
             print("on the x-axis with an x value of \(x)")
         case (0, let y):
             print("on the y-axis with an y value of \(y)")
         case (-2...2, -2...2):
             print("\(somePoint) is inside the box")
         default:
             print("\(somePoint) is outside of the box")
         }
}

where ๋ฌธ

  • where ๋ฌธ์˜ ์ถ”๊ฐ€๋กœ ์ถ”๊ฐ€ ์กฐ๊ฑด์„ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

where ๋ฌธ ์˜ˆ์ œ

func wherePoint(point:(int,Int))
{
    switch point {
    case let (x, y) where x == y:
        print("(\(x), \(y)) is on the line x == y")
    case let (x, y) where x == -y:
        print("(\(x), \(y)) is on the line x == -y")
    case let (x, y):
        print("(\(x), \(y)) is just some arbitrary point")
    }
}

๋ฐ˜๋ณต๋ฌธ

for - in ๊ตฌ๋ฌธ

while ๊ตฌ๋ฌธ

repeat-while ๊ตฌ๋ฌธ

๊ตฌ๋ฌธ ์ด๋ฆ„ํ‘œ