prefer_spread_collections
prefer_spread_collections
Dart 분석기(analyzer)가 만들어 내는 'prefer_spread_collections' 진단에 대한 설명이에요. 여러 요소를 추가하는 동작을 인라인으로 펼쳐 쓸 수 있다는 규칙이에요.
본문
설명
분석기는 리스트 리터럴로 만든 리스트에 다른 컬렉션의 항목을 추가하는 데 addAll이 쓰이고, 그 자리에 스프레드 요소(spread element)를 쓸 수 있는 상황일 때 이 진단을 만들어 내요.
예시
다음 코드는 numbers 리스트의 항목을 addAll을 사용해 새 리스트에 추가하고 있기 때문에 이 진단이 발생해요:
List<int> f(List<int> numbers) {
return [0, 1]..addAll(numbers);
}
다음 코드는 nullable인 numbers 리스트의 항목을 addAll을 사용해 새 리스트에 추가하고 있기 때문에 이 진단이 발생해요:
List<int> f(List<int>? numbers) {
return [0, 1]..addAll(numbers ?? const []);
}
일반적인 수정 방법
추가하는 컬렉션이 nullable이 아니라면 스프레드 요소(...)를 사용해 항목을 새 리스트에 포함시켜요:
List<int> f(List<int> numbers) {
return [0, 1, ...numbers];
}
추가하는 컬렉션이 nullable이라면 null-aware 스프레드 요소(...?)를 사용해 null이 아닐 때만 조건부로 항목을 포함시켜요:
List<int> f(List<int>? numbers) {
return [0, 1, ...?numbers];
}