반응형
Dart, 함수 비교 테스트
글. 수알치 오상문
최상위 함수, static 메서드, 인스턴스 메서드(instance method)가 같은지 테스트하는 예제입니다.
void foo() { } // 최상위 함수
class A {
static void bar() { } // 정적 메서드
void baz() { } // 인스턴스 메서드
}
void main() {
Function x; // 함수 객체형 변수
// 최상위 함수 비교.
x = foo;
assert(foo == x);
// static 메서드 비교
x = A.bar;
assert(A.bar == x);
// 인스턴스 메서드 비교
var v = A(); // A 클래스의 인스턴스 v (#1)
var w = A(); // A 클래스의 인스턴스 w (#2)
var y = w; // w와 같은 함수를 가리키는 함수형 변수 w
x = w.baz;
// 이 클로저는 같은 인스턴스(#2)를 참조하므로 서로 같다.
assert(y.baz == x);
// 이 클로저는 다른 인스턴스를 참조하므로 서로 다르다.
// so they're unequal.
assert(v.baz != w.baz); }
<이상>
반응형
'Dart' 카테고리의 다른 글
Dart, 흐름 제어 if, for, while, do while, switch (0) | 2021.06.15 |
---|---|
Dart, 연산자 (0) | 2021.06.15 |
Dart, 접근 범위와 클로저(closure) (0) | 2021.06.15 |
Dart, 이름없는 함수 (0) | 2021.06.15 |
Dart, 함수 (0) | 2021.06.14 |