Flutter ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ Swift์ Result ํ์ ๊ณผ ๋์ํ๋ ๊ฐ๋ ์ด ์์๊น? ๋ฅผ ์ฐพ์๋ณด๋ ๋์ค ์ฐ์ฐํ ๋ง์ฃผ์น ์ข์ ์ธ์ ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
if-else ์ ๋ฌธ์ ์
์๋ฌ๋ฅผ ๊ฐ์ฅ ๋จ์ํ๊ฒ ์ฒ๋ฆฌํ๋ค๋ฉด ์์ ๊ฐ์ด ์ฐ์์ ์ธ if-else๋ฌธ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์ ๋ฌธ์ ์ ์ ์๋ฌ ๋ฐ์ ์ปจํ ์คํธ๋ฅผ ํ๋ถํ๊ฒ ํํํ๊ธฐ ์ด๋ ต๋ค๋ ๊ฒ์ด๋ค. ๊ฐ์ฅ ๋จผ์ ์ค๋ ์กฐ๊ฑด๊ณผ ๊ฐ์ฅ ์๋ ์ค๋ ์กฐ๊ฑด์ด ๋ถ๋ถ์งํฉ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
Exception - ์๋ฌ์ ํ๋ถํ ์๋ฏธ ๋ถ์ฌํ๊ธฐ
if-else๋ฌธ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด try-catch๋ฅผ ์ด์ฉํด ์๋ฌ๋ฅผ ์ฒ๋ฆฌํด์ค ์ ์๋ค. ์์ ๊ฐ์ด try-catch๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ ์์ ์ธ ๋ก์ง๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ก์ง์ ๋ช ํํ ๋ถ๋ฆฌํ์ฌ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์ง ํ ์ ์๋ค.
ํ์ง๋ง try-catch ๋ ๊ทผ๋ณธ์ ์ผ๋ก ๊ณ ํฌ๊ตฌ๋ฌธ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค๋ ๋จ์ ์ด ์๋ค. ๋ง์ฝ ํน์ ์ฝ๋ ๋ธ๋ก์ try-catch๋ก ๊ฐ์ธ๋ ๊ฒ์ ๊น๋นกํ๋ฉด, ๊ทธ ์ฝ๋์์ ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ํด๋น ์์ธ๋ ์์ ํธ์ถ ์คํ์ผ๋ก ์ ํ๋๋ค. ์์ ๋ ๋ฒจ์ try-catch ๋ธ๋ก์ด ์์ผ๋ฉด, ์์ธ๋ ์ต์ข ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ํฌ๋์ฌ์ํจ๋ค.
Either - ์๋ฌ์ ์ฑ๊ณต ๋์์ ์ฒ๋ฆฌํ๊ธฐ
Either๋ iOS์ Result ํ์ ๊ณผ ๋์ํ๋ ๋ ์์ด๋ค. ์ ๋๋ฆญ ํ์ ์ผ๋ก ์๋ฌ์ ํด๋นํ๋ ํ์ ๊ณผ ๊ฒฐ๊ณผ์ ํด๋นํ๋ ํ์ ์ ๋ฃ์ ์ ์๋ค. ์ด๋ก์จ ๋ฆฌํด๋ฐธ๋ฅ๋ฅผ ํตํด ์๋ฌ์ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์์ด ์์ ์์ ์คํ์ ์ฐพ๋ค ํฌ๋์ฌ๋๋ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋ค. (๊ฐ๋ ์ฑ๋ ํจ์ฌ ์ข์์ง๋ค)
Either ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ ๋๋ ์์ ๊ฐ์ด fold ๋ฉ์๋๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์๋ค.
Union - ์ฌ๋ฌ ์ผ์ด์ค ๊ฒน์น์ง ์๊ฒ ์ฒ๋ฆฌํ๊ธฐ
์์ Either๋ ์๋ฌ์ ์ฑ๊ณต ๋ฐ์ดํฐ ํ์ ๋๊ฐ๊ฐ ๋ด๊ฒจ์ ๋ฆฌํด๋์๋ค. ์ฌ๊ธฐ์ ํ ๋ฐ์๊ตญ ๋ ๋๊ฐ Union์ ์ฌ๋ฌ๊ฐ์ ํ์ ์ ๋ฐ์ค์ ๋ด์ ๋ฆฌํดํ๋ค.
๋ต์ Union์ด๋ค. Freezeed ํจํค์ง๋ฅผ ์ฌ์ฉํด์ ์๋ฌ๋ชจ๋ธ์ ์ ์ํด์ค๋ค์ ์์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ง ์๋ฌ ์ํฉ์ ํ์ ๋งค์นญํด์ค ์ ์๋ค.
์ถ์ฒ:
https://www.youtube.com/watch?v=9E6EeIzp2FQ&t=363s
'๐ฆ Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
flutter_localization depends on flutter_localizations from sdk which depends on intl 0.18.1 ์๋ฌ (2) | 2024.05.30 |
---|---|
Sliver ์ ๋ํด ์์๋ณด์ (0) | 2024.05.30 |
Flutter ํ๋ก์ ํธ ๋๋ฒ๊ทธ์ฉ/๋ฐฐํฌ์ฉ ๋ถ๋ฆฌํ๊ธฐ (0) | 2024.05.24 |
fatal error: module 'cloud firestore' not found ์ด์ (0) | 2024.05.24 |
PreferredSize ๋? (0) | 2024.05.21 |