디스패치 테이블

Dispatch table

컴퓨터 과학에서, 디스패치 테이블은 기능이나 방법에 대한 포인터메모리 주소의 표다.[1]이러한 표의 사용은 객체 지향 프로그래밍에서 늦은 바인딩을 구현할 때 일반적인 기법이다.

펄 구현

다음해시를 사용하여 코드(함수 포인터라고도 함)에 대한 참조를 저장하는 Perl에서 디스패치 테이블을 구현하는 한 가지 방법을 보여준다.

# 익명 코드-ref 1개 및 코드-ref 1개를 사용하여 테이블 정의 나의 %dispatch = (     "-h" => 후보선수 {  돌아오다 "안녕\n"; },     "-g" => \&say_says );   후보선수 say_says {     돌아오다 "goodbye\n"; }   # 테이블에서 코드 ref를 가져와 호출 나의 $sub = 달러화{$ARGV[0]}; 인쇄하다 $sub ? $sub->() : "논쟁\n"; 

다음 이름으로 이 Perl 프로그램 실행perl greet -h'헬로'를 제작하고 '로 운영'할 것이다.perl greet -g"수치"를 생산하게 될 것이다.

자바스크립트 구현

다음은 자바스크립트에서 디스패치 테이블을 구현하는 데모를 보여준다.

시합을 하다 WeCanDo. = {     doThisThing      : 기능을 하다() { /* 행동 */ },     더싱      : 기능을 하다() { /* 행동 */ },     doThisOtherThing : 기능을 하다() { /* 행동 */ },     체납          : 기능을 하다() { /* 행동 */ } };  시합을 하다 어떻게 좀 해봐. = 기능을 하다(뭘 해) {     시합을 하다 팅투도 = WeCanDo..hasOwnProperty(뭘 해) ? 뭘 해 : "기본값"     WeCanDo.[팅투도](); } 

가상 메서드 테이블

가상 방법을 지원하는 객체 지향 프로그래밍 언어에서 컴파일러는 가상 방법을 포함하는 클래스의 각 객체에 대해 디스패치 테이블을 자동으로 생성한다.이 테이블을 가상 메서드 테이블 또는 vtable이라고 하며, 가상 메서드에 대한 모든 호출은 vtable을 통해 전송된다.

참고 항목

참조

  1. ^ Goldfuss, Alice. "Function Dispatch Tables in C". alicegoldfuss.com. Retrieved 23 January 2021.