Null Safety
π¬ λ μμ μ±μ λ€νΈ 2.12.0 λ° νλ¬ν° 2λΆν° 곡μ μ§μλλ€.
Null Safetyλ?
π¬ λ μμ μ± κΈ°λ₯μ νμ±ννκ³ μλμ μ½λλ₯Ό μμ±νλ©΄ μλ¬κ° λ°μνλ€.
int i = null; // error
π¬ λ μμ μ±μ λμ νλ©΄ ν΄λΉ λ³μ νμ μ΄ λμ νμ©νλμ§ μλμ§λ₯Ό μ ννκ² λμ ν΄μΌ νλ€.
π¬ λμ λμ νκΈ° μν΄μλ νμ μμ ?λ₯Ό λΆμ΄λ©΄ λλ©°, ?κ° λΆμ΄μμ§ μμ νμ μ λμ λμ ν μ μλ€.
int? i = null; // OK
νμ μμ€ν μ λ³ν
π¬ κΈ°μ‘΄μ λ€νΈλ λͺ¨λ νμ μ΄ λμ΄ λμ λ μ μμκ³ , λ νμ μ μ΅νμ νμ μ΄μλ€.
π¬ λ μμ μ±μ΄ μ μ©λλ©΄μ κΈ°μ‘΄ νμ μ λμ΄ λμ λ μ μμΌλ―λ‘, λ νμ μ μ΄λ ν νμ κ³Όλ κ΄κ³μλ λ³λ νμ μΌλ‘ μ·¨κΈλλ€.
π¬ λν, λμ νμ©νμ§ μλ νμ κ³Ό λμ νμ©νλ νμ μΌλ‘ ꡬλΆν μ μκ² λμκ³ , μλ‘ λ€λ₯Έ νμ μΌλ‘ μ·¨κΈλλ€.
π¬ λμ νμ©νλ νμ μ κ²½μ° ν΄λΉ νμ κ³Ό λμ λͺ¨λ λμ ν μ μμΌλ―λ‘ μλμ κ°μ μμκ΄κ³λ‘ ννν μ μλ€.
π¬ λμ νμ©νμ§ μλ νμ μμλ κΈ°μ‘΄μ λμ΄ μ리νλ μ΅νμ κ°μ²΄μ μ΄λ€ κ°λ λ΄μ μ μλ NeverλΌλ νΉμν νμ μ΄ μΆκ°λμλ€.
Nullμ μμ ν μ½λ μμ±
λ¦μ μ΄κΈ°ν
π¬ μλ μ½λλ λ μμ μ±μ μ μ©νμ λ λ¬Έλ²μ μΌλ‘ μλ¬κ° λ°μνλ€.
class Person {
int age; // μ μΈμ null, error
Person() {
age = 20;
}
}
π¬ μ μ½λλ₯Ό μμ νκ² λμ μμ±νλ €λ©΄ late ν€μλλ₯Ό μ μΈ μμ λΆμ΄λ©΄ λλ€.
class Person {
late int age;
Person() {
age = 20; // μμ±μμμ μ΄κΈ°ν OK
}
}
nullμΌ μ μλ κ°μ μ²λ¦¬νλ λ°©λ²
A?.B
π¬ Aκ° nullμ΄ μλλ©΄ A κ°μ²΄μ B μμ±μ μ¬μ©νκ³ , nullμ΄λ©΄ κ·Έλ₯ nullμ λ°ν
String? name;
print(name.length); //Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
print(name?.length); //?.λ‘ μ²λ¦¬ν΄ μ£Όλ©΄ μλ¬κ° λμ§ μμ
A ?? B
π¬ Aκ° nullμ΄λ©΄ Bλ₯Ό λ°ν
int age = 16;
int myAge = age ?? 20;
print(myAge); // ageκ° nullμ΄ μλλ―λ‘ 16
A ??= B
π¬ μμ λ°λλ‘ Bκ° nullμ΄λ©΄ λ°±μ κ°μ ν λΉνκ³ , μλλ©΄ Bλ₯Ό λ°ν
int age;
int myAge = 24;
myAge ??= age;
print(myAge); // ageκ° nullμ΄λ―λ‘ 24
π¬ λμ νμ©νλ νμ μ 맀κ°λ³μλ‘ μ¬μ©νλ λ©μλκ° μλ€λ©΄ νμ μ λͺ μν΄μ€μΌ νλ€.
int len(String? str) {
if (str == null) {
return 0;
}
return str.length;
}
π¬ λμΌ μ μλ λ³μμ λμ΄ μλ κ°μ΄ λ€μ΄μμ κ²½μ°, λμ΄ μλ νμ μΌλ‘ μ¬μ©νκ³ μΆμ λ, !μ λΆμ΄λ©΄ κ°μ λ‘ λμ΄ μλμ λͺ μνκ² λλ€.
int? nullableValue = 10;
int value = nullableValue!; // !μ λΆμ΄λ©΄ nullμ΄ μλμ λͺ
μνμ¬ ν λ³νμ΄ λ¨
β½ nullableValueκ° λμ΄λ©΄ μμΈ λ°μμΌλ‘ νλ‘κ·Έλ¨μ΄ μ’ λ£λκΈ° λλ¬Έμ κ°κΈμ !보λ€λ ??μ νμ©νλλ‘ νμ.
π¬ 컬λ μ μ λ€λ£° λμλ μλμ κ°μ΄ λͺ νν νμ μ λͺ μν΄ μ€μΌ νλ€.
List<String>
List<String>?
List<String?>
List<String?>?
'Dart' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ Dart ] μλ¬, μμΈ μν© μ μ΄νκΈ° (0) | 2022.02.04 |
---|---|
[ Dart ] κΈ°ν μ μ©ν κΈ°λ² (0) | 2021.12.21 |
[ Dart ] ν¨μν νλ‘κ·Έλλ° (0) | 2021.12.21 |
[ Dart ] 컬λ μ (0) | 2021.12.21 |
[ Dart ] κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (0) | 2021.12.21 |