๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[Swift] assert์™€ guard

by hyebin (Helia) 2023. 2. 6.
๋ฐ˜์‘ํ˜•

assert

  • ํŠน์ • ์กฐ๊ฑด์„ ์ฒดํฌํ•˜๊ณ , ์กฐ๊ฑด์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜
  • assert ํ•จ์ˆ˜๋Š” ๋””๋ฒ„๊น… ๋ชจ๋“œ์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ณ  ์ฃผ๋กœ ๋””๋ฒ„๊น… ์ค‘ ์กฐ๊ฑด์˜ ๊ฒ€์ฆ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ
var value = 0
assert(value == 0)

value = 2
assert(value == 0, "๊ฐ’์ด 0์ด ์•„๋‹™๋‹ˆ๋‹ค.")
  • ์ฒซ ๋ฒˆ์งธ assert๋Š” ์ฐธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
  • ๋‘ ๋ฒˆ์งธ assert๋Š” ๊ฑฐ์ง“์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ
    • Assertion failed: ๊ฐ’์ด 0์ด ์•„๋‹™๋‹ˆ๋‹ค.

 

guard ๋ฌธ

  • ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ๋‹ค์Œ์— ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ตฌ๋ฌธ
  • guard์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์„ ์‹œ ํŠน์ • ์‹คํ–‰ ๊ตฌ๋ฌธ์„ ๋น ๋ฅด๊ฒŒ ์ข…๋ฃŒ
  • guard์˜ else ๋ธ”๋ก ๋‚ด๋ถ€์—๋Š” ํŠน์ • ์ฝ”๋“œ ๋ธ”๋ก์„ ์ข…๋ฃŒํ•˜๋Š” ์ง€์‹œ์–ด(return, break ๋“ฑ)๊ฐ€ ๊ผญ ์žˆ์–ด์•ผ ํ•จ
  • ํƒ€์ž… ์บ์ŠคํŒ…, ์˜ต์…”๋„๊ณผ ์ž์ฃผ ์‚ฌ์šฉ
func guardTest(_ value: Int){
    guard value == 0 else {return}
    print("์•ˆ๋…•ํ•˜์„ธ์š”")
}

guardTest(1)
guardTest(0)    //์•ˆ๋…•ํ•˜์„ธ์š”

 

"if let" vs "guard let"

  • if let์€ ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ ๋œ ์ƒ์ˆ˜๊ฐ€ if let ๊ตฌ๋ฌธ ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • guard let ๊ตฌ๋ฌธ์€ ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ ๋œ ์ƒ์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ง€์—ญ ์ƒ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • if let ๊ตฌ๋ฌธ์€ else๊ฐ€ ํ•„์š” ์—†์ง€๋งŒ, guard let ๊ตฌ๋ฌธ์€ else ๊ตฌ๋ฌธ์ด ๋ฌด์กฐ๊ฑด ๋”ฐ๋ผ์™€์•ผ ํ•จ
๋ฐ˜์‘ํ˜•