Dart: 기초 배우기

Flutter In Action을 읽으며 Dart의 기초부터 실습하는 중이다.

/// 화살표 함수 사용하기
void main() {
  // 기본 함수
  String makeGreeting(String name) {
    return '안녕, $name';
  }

  print(makeGreeting('Park'));

  // 고차 함수: => 는 {return 표현식}과 같다. 화살표 함수에서는 return 키워드 불필요.
  String makeGreetingArrow(String name) => '안녕, $name';
  print(makeGreetingArrow('Park'));
}

오래된 Java 문법에 익숙해져 있던 터라, Dart가 많이 낯설다.

/// 이름 지정 파라미터
void main(List<String> args) {
  // 이름 지정 파라미터(required)를 사용하면 반드시 파라미터 이름을 지정해야 한다.
  String reqParam({required String param}) {
    return param;
  }

  reqParam(param: '');
}

요즘 에디터는 많이 똑똑해져서, 전용 IDE가 아니더라도 강력하게 자동 완성/코드 추천해준다.

required에 따라 param을 추가해야 한다고 알려줌.

Dart를 접하고 ?.연산자를 보고 참 편하다고 생각했다. null 인지 연산자로, null이 아니면 할당하고 null이면 오류를 발생시키지 않고 그대로 null을 할당한다.

/// 선택형 위치 지정 파라미터
void main(List<String> args) {
  // 아래는 안 되는 모양. 아래와 같은 에러가 발생.
  //   The parameter 'z' can't have a value of 'null' because of its type, but the implicit default value is 'null'.
  // Try adding either an explicit non-'null' default value or the 'required' modifier.dartmissing_default_value_for_parameter
  // int addSomeNums(int x, int y, [int z]) {
  //   int sum = x + y;
  //   if (z != null) {
  //     sum += z;
  //   }
  //   return sum;
  // }

  // 이건 된다!!!
  int addSomeNums2(int x, int y, [int? z]) {
    int sum = x + y;
    if (z != null) {
      sum += z;
    }
    return sum;
  }

  // 세 번째 파라미터는 선택형이므로 인수를 전달하지 않아도 된다.
  print(addSomeNums2(5, 4));
  print(addSomeNums2(5, 4, 3));
}

?? 연산자도 편리하다. DB에서 가져온 데이터에 null이 있을 때 자동으로 0등으로 대치할 수 있다.

void main(List<String> args) {
  var age = null;
  int userAge = age ?? 0;
  print(userAge);
}

??= 연산자는 반대의 작업을 한다. 객체가 null이면 백업값을 할당하고 아니면 객체를 그대로 반환.

void main(List<String> args) {
  var x = 5;
  x ??= 3;
  print(x);
}

고차함수 테스트

void main(List<String> args) {
  // method 1(anonymous function무명 함수 사용)
  List<int> nums = [1, 2, 3];
  nums.forEach((element) {
    print(element + 1);
  });

  // method 2
  void addOneAndPrint(int num) {
    print(num + 1);
  }

  nums.forEach((element) {
    addOneAndPrint(element);
  });

  // 이렇게 호출해도 된다.
  nums.forEach(addOneAndPrint);
}

고급 함수 개념.

/// 고급 함수 개념
void main(List<String> args) {
  // 옛날 방식
  List<int> nums = [1, 2, 3, 4, 5];
  int i = 0;
  int sum = 0;
  while (i < nums.length) {
    sum += nums[i];
    i += 1;
  }
  print(sum);

  // 새로운 방식
  int sum2 = 0;
  List<int> nums2 = [1, 2, 3, 4, 5];
  sum2 = nums.reduce((total, element) => total + element);
  print(sum2);
}

List.map과 forEach

/// List.map 과 forEach 사용하기
void main(List<String> args) {
  List<int> smallNums = [1, 2, 3];
  Iterable<int> biggerNums = smallNums.map((e) => e * 2);

  print(smallNums);
  print(biggerNums);
}

내일은 Flutter 편으로 들어가자.

이것도 살펴보세요!

WSL 개발 환경 설정

WSL로 개발 환경 설정하는 법 https://learn.microsoft.com/ko-kr/windows/wsl/setup/environment 1. 아래 명령으로 WSL을 설치하고, 리눅스 사용자 이름과 암호 …

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다