请输入您要查询的百科知识:

 

词条 Dispatch table
释义

  1. Perl implementation

  2. JavaScript implementation

  3. Virtual method tables

  4. See also

  5. References

In computer science, a dispatch table is a table of pointers to functions or methods. Use of such a table is a common technique when implementing late binding in object-oriented programming.

Perl implementation

The following shows one way to implement a dispatch table in Perl, using a hash to store references to code (also known as function pointers).

 # Define the table using one anonymous code-ref and one named code-ref my %dispatch = (   "-h" => sub {  return "hello\"; },   "-g" => \\&say_goodbye );  sub say_goodbye {   return "goodbye\"; }  # Fetch the code ref from the table, and invoke it my $sub = $dispatch{$ARGV[0]}; print $sub ? $sub->() : "unknown argument\";

Running this Perl program as perl greet -h will produce "hello", and running it as perl greet -g will produce "goodbye".

JavaScript implementation

Following is a demo of implementing dispatch table in JavaScript:

var thingsWeCanDo = {

    doThisThing      : function() { /* behavior */ },    doThatThing      : function() { /* behavior */ },    doThisOtherThing : function() { /* behavior */ },    default          : function() { /* behavior */ }

};

var doSomething = function(doWhat) {

    var thingToDo = thingsWeCanDo.hasOwnProperty(doWhat) ? doWhat : "default"    thingsWeCanDo[thingToDo]();

}

Virtual method tables

{{Main|Virtual method table}}

In object-oriented programming languages that support virtual methods, the compiler will automatically create a dispatch table for each object of a class containing virtual methods. This table is called a virtual method table or vtable, and every call to a virtual method is dispatched through the vtable.

See also

  • Branch table

References

  • Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. {{ISBN|0-201-79940-5}}

2 : Method (computer programming)|Articles with example Perl code

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/24 10:15:06