์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ์น๋์๋ณด๋ ์ ์
- MySQL
- ํ์ด์ฌ
- ์๋ฐ์ด๋ณด
- ์๋ฐ๊ณต๋ถ
- ์๋๋ก์ด๋ ์คํ๋์ค
- ํ๋ค์ค
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ๊ธฐ์ด
- ์๋ฐ
- java
- Pandas
- ํ์ด์ฌ๊ณต๋ถ
- ์น๋์๋ณด๋ ๊ธฐ์ด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- db
- Streamlit๊ธฐ๋ณธ
- streamlit
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ
- ์คํธ๋ฆผ๋ฆฟ
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- Flutter
- Streamlit๊ธฐ์ด
- JavaScript
- RESTful API
- Android
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- ํ๋ค์ค๊ณต๋ถ
- serverless
- Today
- Total
ruriruriya
[Dart] Null Safety์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ late ํค์๋ ๋ณธ๋ฌธ
[Dart] Null Safety์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ late ํค์๋
๋ฃจ๋ฆฌ์ผใ 2024. 12. 18. 13:36
Dart ์ธ์ด์์๋ Null Safe๋ผ๋ ๊ฐ๋
์ด ์๋๋ฐ
์ด๋ ๋ณ์์ null ๊ฐ์ ํ์ฉํ ์ง ๋ช
ํํ๊ฒ ์ ์ธํ๋ ๊ฒ์ด๋ค.
์ด ๊ธฐ๋ฅ์ NullPointerExcaption ๋ฑ๊ณผ ๊ฐ์ null๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ค.
1. Dart ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก null์ ๊ฐ์ง ์ ์๋ค.
์ฆ, null์ ํ์ฉํ๋ ํ์๊ฐ ์๋ค๋ฉด ์ ๋. null์ ๊ฐ์ง ์ ์๋ค.
null์ ํ์ฉํ๋ ค๋ฉด ๋ฐ์ดํฐํ์
๋ค์ '?' ๋ฌผ์ํ๋ฅผ ๋ถ์ฌ์ค๋ค.
(์ฝํ๋ฆฐ๋ ๋น์ทํ ๊ฐ๋
์ด์ง๋ง ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์์ ์ฐจ์ด๊ฐ ์๋ ๋ฏ ํ๋ค.)
Null์ ํ์ฉํ์ง ์๋ ๋ณ์ ์์
void main() {
int number = 10; // null์ ํ์ฉํ์ง ์๋ ๋ณ์
print(number);
// number = null; // ์ค๋ฅ! null ๊ฐ์ ํ ๋นํ ์ ์์.
}
Null์ ํ์ฉํ๋ ๋ณ์ ์์
void main() {
int? number = null; // null์ ํ์ฉํ๋ ๋ณ์
print(number); // ์ถ๋ ฅ: null
number = 20; // ๋์ค์ ๊ฐ์ ํ ๋น
print(number); // ์ถ๋ ฅ: 20
}
2. Null ๊ธฐ๋ณธ๊ฐ ์ฒ๋ฆฌ(default value)
๋ง์ฝ null์ด๋ผ๋ฉด null๋ก ๋์ค์ง ์๊ฒ ์ด ๊ฐ์ผ๋ก ๋์ ์ฐ๋ผ๋ ์๋ฏธ์ด๋ค.
์๋ ์์๋ null์ด๋ผ๋ฉด 10์ ๋์ ์ถ๋ ฅํ๋ผ๋ ์ฝ๋์ด๋ค.
void main() {
int? number = null;
// number๊ฐ null์ด๋ฉด ๊ธฐ๋ณธ๊ฐ 10์ ์ฌ์ฉ
print(number ?? 10); // ์ถ๋ ฅ: 10
}
๋ง์ง๋ง number์ ๊ฐ์ 10์ด๊ธฐ ๋๋ฌธ์
๋ค์ ??= ์ผ๋ก ๋ค๋ฅธ ๊ฐ, ์๋ฅผ ๋ค๋ฉด 20์ ์ค์ ํ๋ค๋ฉด 10์ด ๋์จ๋ค.
์๋ํ๋ฉด null์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ง๋๋ค.
3. Null Safety ํจ์ ํ๋ผ๋ฏธํฐ ์ฌ์ฉ๋ฒ
null์ ํ์ฉํ์ง ์๋ ํจ์ ํ๋ผ๋ฏธํฐ
String name์ null์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ null ๊ฐ์ ์ ๋ฌํ๋ฉด ์ค๋ฅ๊ฐ ๋๋ค.
void greet(String name) {
print("์๋
ํ์ธ์, $name๋!");
}
void main() {
greet("ํ๊ธธ๋"); // ์ ์ ์ถ๋ ฅ
// greet(null); // ์ค๋ฅ ๋ฐ์: name์ null์ ์ ๋ฌํ ์ ์์.
}
null์ ํ์ฉํ๋ ํจ์ ํ๋ผ๋ฏธํฐ
String?๋ก ์ ์ธํ๋ฉด null ๊ฐ์ ๋ฐ์ ์ ์๊ณ , null์ผ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์ ํ ์ ์๋ค.(if ๋ฌธ)
void greet(String? name) {
if (name != null) { //name์ ๊ฐ์ด null์ด ์๋๋ฉด
print("์๋
ํ์ธ์, $name๋!");
} else { // name์ ๊ฐ์ด null์ด๋ผ๋ฉด
print("์๋
ํ์ธ์, ์๋!");
}
}
void main() {
greet(null); // ์ถ๋ ฅ: ์๋
ํ์ธ์, ์๋!
greet("ํ๊ธธ๋"); // ์ถ๋ ฅ: ์๋
ํ์ธ์, ํ๊ธธ๋๋!
}
4. late ํค์๋
late ํค์๋๋ ๋ณ์๋ฅผ ๋์ค์ ์ด๊ธฐํํ ์ ์๋๋ก ํด์ค๋ค.
ํ์ง๋ง null์ด ์๋์ ๋ณด์ฅํด์ค์ผ ํ๋ค.
์๋ ์ฝ๋์ฒ๋ผ
late๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐ๊ฐ์ ์ฃผ์ง ์์๋ ๋์ง๋ง, ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ ๊ฐ์ ์ค์ (์ด๊ธฐํ)ํด์ผ ํ๋ค.
void main() {
late String name; // ๋์ค์ ์ด๊ธฐํ๋ ๋ณ์
name = "ํ๊ธธ๋"; // ์ด๊ธฐํ
print(name); // ์ถ๋ ฅ: ํ๊ธธ๋
}