[Flutter] null 처리 우선순위

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
final Map<String, dynamic> values = {
"a": null,
"b": 10
};
final res = values["a"] ?? 0 + values["b"] ?? 0;
print(res);
// Expect: 10
// Result: error
final Map<String, dynamic> values = { "a": null, "b": 10 }; final res = values["a"] ?? 0 + values["b"] ?? 0; print(res); // Expect: 10 // Result: error
final Map<String, dynamic> values = {
  "a": null,
  "b": 10
};

final res = values["a"] ?? 0 + values["b"] ?? 0;
print(res);

// Expect: 10
// Result: error

우선순위를 명시하지 않으면 위 코드는 (values[“a”] ?? 0) + (values[“b”] ?? 0) 으로 처리될 것 같지만,
(values[“a”] ?? 0 + values[“b”]) ?? 0 으로 동작하게 된다.

따라서 null 처리 할 시에 우선순위를 명시해주자.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
final Map<String, dynamic> values = {
"a": null,
"b": 10
};
final res = (values["a"] ?? 0) + (values["b"] ?? 0);
print(res);
// Expect: 10
// Result: 10
final Map<String, dynamic> values = { "a": null, "b": 10 }; final res = (values["a"] ?? 0) + (values["b"] ?? 0); print(res); // Expect: 10 // Result: 10
final Map<String, dynamic> values = {
  "a": null,
  "b": 10
};

final res = (values["a"] ?? 0) + (values["b"] ?? 0);
print(res);

// Expect: 10
// Result: 10