"Dart의 Cascade Operator(..)

pharmDev·2024년 12월 19일

두 코드(1번과 2번)의 기능 설명

두 코드 모두 동일한 작업을 수행합니다. 특정 date와 일치하는 데이터를 scheduleTable에서 가져오는 SQL 쿼리를 실행하는 것입니다. 차이점은 작성 스타일과 코드가 표현되는 방식에 있습니다. 아래에서 각각의 코드를 설명하며 초보 개발자가 이해하기 쉽게 주석을 추가하겠습니다.


1번 코드

final selectQuery = select(scheduleTable);
// 조건을 추가: scheduleTable의 date 필드가 입력받은 date와 같은 경우만 선택
selectQuery.where((table) => table.date.equals(date));

// 쿼리를 실행하여 결과를 반환
return selectQuery.get();



/// 다른 풀이
final selectQuery = select(scheduleTable); 
// 1. 테이블에서 데이터를 가져올 쿼리를 생성

selectQuery.where((table) => table.date.equals(date)); 
// 2. 조건 추가: table.date가 특정 date와 같은 행만 필터링

return selectQuery.get(); 
// 3. 쿼리를 실행하고 결과를 반환
  • 설명:
    1. select(scheduleTable)을 통해 테이블의 데이터를 가져오는 쿼리를 생성합니다.
    2. where()를 사용하여 필터 조건을 추가합니다. 여기서는 date 필드가 특정 date와 일치하는 데이터를 가져오도록 설정합니다.
    3. 마지막으로 .get()을 호출하여 쿼리를 실행하고 데이터를 반환합니다.

2번 코드

// select(scheduleTable)로 데이터를 가져오는 쿼리를 작성
// ..where()를 사용해 조건을 추가: date 필드가 입력받은 date와 같은 경우만 선택
return (select(scheduleTable)..where((table) => table.date.equals(date))).get();


///  다른 풀이
return (select(scheduleTable)..where((table) => table.date.equals(date))).get();
// 1. select(scheduleTable): 쿼리 생성
// 2. ..where(...): 조건 추가
// 3. .get(): 쿼리를 실행하고 결과 반환
  • 설명:
    1. 한 줄로 작성된 형태입니다. select(scheduleTable)로 데이터를 가져오는 쿼리를 생성합니다.
    2. ..(cascade operator)를 사용하여 where() 메서드를 호출합니다. 이 방식은 쿼리를 생성한 후 바로 조건을 추가할 수 있습니다.
    3. .get()으로 쿼리를 실행하고 데이터를 반환합니다.

차이점과 같은 기능을 하는 이유

  1. 1번 코드는 쿼리 생성, 조건 추가, 실행을 각각 별도의 단계로 나누어 작성합니다.

    • 장점: 각 단계를 명확히 분리해 초보자가 쉽게 이해할 수 있습니다.
    • 단점: 코드가 조금 길어질 수 있습니다.
  2. 2번 코드는 한 줄로 작성된 형태로, .. 연산자를 사용해 메서드 체이닝으로 처리합니다.

    • 장점: 코드를 더 간결하고 깔끔하게 작성할 수 있습니다.
    • 단점: 초보자에게는 .. 연산자가 낯설 수 있습니다.

.. 연산자 (Cascade Operator) 설명

  • 역할: 객체를 반환하지 않고 동일 객체에서 연속적으로 메서드를 호출할 수 있게 해줍니다.

  • 예제:

    var person = Person()
      ..setName("Alice")
      ..setAge(25)
      ..setCountry("USA");

    위 코드는 아래와 동일합니다:

    var person = Person();
    person.setName("Alice");
    person.setAge(25);
    person.setCountry("USA");

요약

  1. 1번 코드는 가독성과 이해를 위해 각 단계를 분리해 작성한 코드입니다.
  2. 2번 코드는 간결하고 효율적인 방법으로 작성한 코드입니다.
  3. 기능적으로 두 코드는 동일하며, 어떤 방식을 선택할지는 상황과 팀의 코드 스타일에 따라 달라질 수 있습니다. 초보자라면 1번 코드부터 익숙해진 뒤 2번 스타일을 시도해 보는 것이 좋습니다.
profile
코딩을 배우는 초보

0개의 댓글