Dart 언어 오답노트 : 10. collection if

샤워실의 바보·2023년 10월 24일
0
post-thumbnail

Dart에서 "collection if"와 "collection for"라는 용어는 리스트나 세트 내에서 직접 조건문이나 반복문을 사용할 수 있게 해주는 구문을 가리킵니다. 이 기능들이 "컬렉션" 안에서 작동하기 때문에 이런 이름이 붙었습니다.

  1. Collection-if: 리스트나 세트 내에서 조건에 따라 요소를 포함시키거나 제외할 수 있습니다. 이를 통해 더 선언적이고 간결한 방식으로 컬렉션을 구성할 수 있습니다.

    예시:

    var numbers = [1, 2, 3, if (condition) 4];

    여기서 conditiontrue이면 리스트에는 4가 포함되고, false이면 포함되지 않습니다.

  2. Collection-for: 리스트나 세트 내에서 반복문을 사용하여 요소를 추가할 수 있습니다.

    예시:

    var numbers = [1, 2, 3, for (var i in anotherList) i];

    이 코드에서 anotherList의 각 요소는 numbers 리스트에 추가됩니다.

이 두 기능 모두 Dart 2.3에서 도입되었으며, 리스트 또는 세트 리터럴 내에서 직접 작업을 수행할 수 있게 해주어 코드를 더 간결하고 읽기 쉽게 만들어 줍니다. "Collection"이라는 용어는 이러한 구문이 리스트나 세트와 같은 컬렉션 자료구조와 관련이 있다는 것을 반영합니다.

이 코드 예시에서는 Dart의 collection-if 구문을 사용하여 리스트를 생성하고, 조건에 따라 리스트에 요소를 추가하는 방법을 보여주고 있습니다.

주요 포인트:

  • Collection-if: 리스트를 정의할 때 특정 조건에 따라 요소를 추가하거나 생략할 수 있습니다. giveMe5000 변수가 true이면, numbers2 리스트에 5000이 추가됩니다.

  • 일반 if 문: giveMe5000 변수가 true이면, numbers2.add(5000)을 호출하여 리스트에 5000을 추가합니다. 이 방식은 collection-if와 동일한 결과를 생성합니다.

  • List 타입 지정: numbers2List<int> 타입으로 명시적으로 선언되어 있으며, 정수만 포함할 수 있습니다. 문자열이나 다른 타입의 값을 추가하려고 시도하면 컴파일 오류가 발생합니다.

  • List 마지막 요소의 쉼표: 리스트의 마지막 요소 뒤에 쉼표(,)를 추가하면, Dart의 포맷터가 리스트를 멋지게 한 줄씩 정렬해 줍니다.

void main() {
  var numbers1 = [
    1,
    2,
    3,
    4,
    5,
  ];

  var giveMe5000 = true;

  List<int> numbers2 = [
    6,
    7,
    8,
    9,
    10,
    // collection-if 구문을 사용하여 조건에 따라 5000을 리스트에 추가
    if (giveMe5000) 5000,
  ];
  
  // 일반 if 문을 사용하여 조건에 따라 5000을 리스트에 추가
  if (giveMe5000) {
    numbers2.add(5000);
  }

  numbers1.add(100);
  numbers2.add(10000);

  // numbers1.add('lalala'); // 오류: 문자열은 int 타입에 할당할 수 없습니다.

  print(numbers1); // [1, 2, 3, 4, 5, 100]
  print(numbers2); // [6, 7, 8, 9, 10, 5000, 5000, 10000]
}

위 코드에서 numbers1numbers2 리스트는 10010000을 추가한 상태로 출력됩니다. numbers2 리스트에는 5000이 두 번 추가된 것을 볼 수 있습니다. 한 번은 collection-if를 사용하여, 다른 한 번은 일반 if 문을 사용하여 추가되었습니다.

profile
공부하는 개발자

0개의 댓글