Effective Dart - Functions in usage

MJ·2023년 6월 11일
0

Dart Basic

목록 보기
9/12

함수의 이름과 함수를 바인드 하려면 함수 선언식을 사용

  • 함수 안에 함수가 선언되는 것을 흔한 일이며 흔히 이런 함수들은 콜백으로 사용되고 이름이 없음 -> 함수 표현식을 이런 경우에 적합
  • 함수에 이름을 부여하고 싶다면 변수에 람다를 바인딩 하지 말고 함수 선언문을 사용
// good case
void main() {
  void localFunction() {
    ...
  }
}

// bad case
void main() {
  var localFunction = () {
    ...
  };
}

람다 대신 Tear-off를 사용

  • 함수, 메서드 또는 named 생성자를 참조할 때 괄호를 생략하면, Dart는 동일한 매개 변수 쌍을 사용하고 호출 시 기본 함수를 호출하는 tear-off 클로저를 사용한다
  • 클로저가 받아들이는 매개변수와 동일한 매개변수를 사용하는 named 함수를 호출하는 클로저를 원한다면, 람다로 래핑하지 않는다
// good case
var charCodes = [68, 97, 114, 116];
var buffer = StringBuffer();

// 함수:
charCodes.forEach(print);

// 메서드:
charCodes.forEach(buffer.write);

// Named 생성자:
var strings = charCodes.map(String.fromCharCode);

// Unnamed 생성자:
var buffers = charCodes.map(StringBuffer.new);

// bad case
var charCodes = [68, 97, 114, 116];
var buffer = StringBuffer();

// 함수:
charCodes.forEach((code) {
  print(code);
});

// 메서드:
charCodes.forEach((code) {
  buffer.write(code);
});

// Named 생성자:
var strings = charCodes.map((code) => String.fromCharCode(code));

// Unnamed 생성자:
var buffers = charCodes.map((code) => StringBuffer(code));

Named 매개변수와 해당 매개변수의 디폴트 값을 분리시키고 싶다면 =을 사용

  • dart3 이전에는 := 를 모두 사용할 수 있었지만 3에서는 =을 사용한다
void insert(Object item, {int at = 0}) { ... }
profile
느긋하게 살자!

0개의 댓글