함수의 이름과 함수를 바인드 하려면 함수 선언식을 사용
- 함수 안에 함수가 선언되는 것을 흔한 일이며 흔히 이런 함수들은 콜백으로 사용되고 이름이 없음 -> 함수 표현식을 이런 경우에 적합
- 함수에 이름을 부여하고 싶다면 변수에 람다를 바인딩 하지 말고 함수 선언문을 사용
void main() {
void localFunction() {
...
}
}
void main() {
var localFunction = () {
...
};
}
람다 대신 Tear-off를 사용
- 함수, 메서드 또는 named 생성자를 참조할 때 괄호를 생략하면, Dart는 동일한 매개 변수 쌍을 사용하고 호출 시 기본 함수를 호출하는 tear-off 클로저를 사용한다
- 클로저가 받아들이는 매개변수와 동일한 매개변수를 사용하는 named 함수를 호출하는 클로저를 원한다면, 람다로 래핑하지 않는다
var charCodes = [68, 97, 114, 116];
var buffer = StringBuffer();
charCodes.forEach(print);
charCodes.forEach(buffer.write);
var strings = charCodes.map(String.fromCharCode);
var buffers = charCodes.map(StringBuffer.new);
var charCodes = [68, 97, 114, 116];
var buffer = StringBuffer();
charCodes.forEach((code) {
print(code);
});
charCodes.forEach((code) {
buffer.write(code);
});
var strings = charCodes.map((code) => String.fromCharCode(code));
var buffers = charCodes.map((code) => StringBuffer(code));
Named 매개변수와 해당 매개변수의 디폴트 값을 분리시키고 싶다면 =을 사용
- dart3 이전에는 : 와 = 를 모두 사용할 수 있었지만 3에서는 =을 사용한다
void insert(Object item, {int at = 0}) { ... }