반응형

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

+ Recent posts