Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Dispatch table

From Wikipedia, the free encyclopedia
Computer code structure with a table of pointers to functions or similar

Incomputer science, adispatch table is a table ofpointers ormemory addresses to functions ormethods.[1] Use of such a table is a common technique when implementinglate binding inobject-oriented programming.

It is primarily used to simplify program lines and reduce lines of code.[2]

In different programming languages

[edit]

Perl

[edit]

The following shows one way to implement a dispatch table inPerl, using ahash to store references to code (also known asfunction pointers).

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

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

JavaScript

[edit]

Following is a demo of implementing a dispatch table in #"ltr">

constthingsWeCanDo={doThisThing(){/* behavior */},doThatThing(){/* behavior */},doThisOtherThing(){/* behavior */},default(){/* behavior */}};functiondoSomething(doWhat){constthingToDo=Object.hasOwn(thingsWeCanDo,doWhat)?doWhat:"default";returnthingsWeCanDo[thingToDo]();}

Lua

[edit]

In Lua, this behavior is supported and encouraged. Here is an example:

localcolors={-- This is a lookup table improving speed and simplifying program logicred="#ff0000",green="#00ff00",blue="#0000ff"}print("Enter a color:")localchoice=io.read("*l")localcolor=colors[choice]ifcolorthenprint("Your color in Hex format is: "..color)end

Virtual method tables

[edit]
Main article:Virtual method table

Inobject-orientedprogramming languages that supportvirtual methods, thecompiler will automatically create a dispatch table for each object of aclass containing virtual methods. This table is called avirtual method table orvtable, and every call to a virtual method is dispatched through the vtable.

See also

[edit]

References

[edit]
  1. ^Goldfuss, Alice."Function Dispatch Tables in C".alicegoldfuss.com. Retrieved23 January 2021.
  2. ^Goldfuss, Alice (2019-03-07)."Function Dispatch Tables in C".Alice Goldfuss. Retrieved2026-01-31.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Dispatch_table&oldid=1335882473"
Category:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp