๐ŸŽ Apple/Swift

[Swift] Result ํƒ€์ž…

JINiOS 2023. 12. 26. 16:07
728x90

Result ํƒ€์ž…์ด๋ž€

enum Result<Success, Failure: Error> {
    case success(Success)
    case failure(Failure)
}
  • Generic Enumeration์œผ๋กœ ์„ ์–ธ๋˜์–ด success ๋˜๋Š” failure ๋‘๊ฐ€์ง€ case๋ฅผ ํฌํ•จํ•˜๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
  • Result ํƒ€์ž…์€ ์„ฑ๊ณต๊ณผ ์‹คํŒจ์— ๋Œ€ํ•œ ๋ฐ˜ํ™˜๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ( = success์—๋Š” ์ž‘์—…์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ €์žฅ๋˜๊ณ , failure์—๋Š” ์—๋Ÿฌ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.)
  • Failure๋Š” Error๋ฅผ ์ƒ์†๋ฐ›์€ ํƒ€์ž…์ด์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.
  • Swift5์—์„œ๋ถ€ํ„ฐ Standard library์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์žฅ์ 

  • ๊ฐ€๋…์„ฑ ์ฆ๊ฐ€: ๊ฒฐ๊ณผ์˜ ์„ฑ๊ณต, ์‹คํŒจ ์—ฌ๋ถ€์™€๋Š” ์ƒ๊ด€์—†์ด ํ•˜๋‚˜๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๊ธธ์ด ๋‹จ์ถ•: optional ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, unwrap ์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
  • ๊น”๋”ํ•œ ์ฝ”๋“œ: ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด throws, throw, do-catch, try ๋“ฑ์˜ ์—ฌ๋Ÿฌ ํ‚ค์›Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ๋กœ์ง์„ ์ž‘์„ฑํ•ด์•ผ ๋˜์ง€๋งŒ Result<>๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ํ‚ค์›Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋น„๊ต์  ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ช…ํ™•์„ฑ: ์—๋Ÿฌ ํ˜•์‹์ด ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ๋˜๊ณ , ํ˜•์‹์ถ”๋ก ์œผ๋กœ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จํ•˜๋ฉฐ ์„ฑ๊ณต, ์‹คํŒจ๋กœ ๋ช…ํ™•ํ•œ ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

https://developer.apple.com/documentation/swift/result

https://1000one.tistory.com/62

https://luke-kong.oopy.io/swift/result-type

728x90