多分派
多分派或多重派发(Multiple dispatch)是某些编程语言的一种特性,函数或者方法的分派取决于运行时参数的对象类型。它是对方法调用只能由调用者决定的单分派的扩展。多分派涵括了两个或多个对象的动态分派。
多态 |
---|
特设多态 |
參數多态 |
|
子类型 |
理解分派
软件工程师通常把代码写进代码块中,代码块通常称作过程,函数,方法。代码通过被调用来执行,调用时将控制权传入函数中,当函数执行完成后将控制权返回给调用者。
函数名通常用来描述函数的目的。有时会将多个函数起同样的名称。比如同名函数在逻辑上处理相同的任务,但是操作在不同类型的输入值上。在这种情况下,无法单单通过函数名来判断目标代码块。那么,函数参数的个数和类型也就被用来判断。
通常,单分派面向对象语言,在调用一个方法时,方法参数中一个参数会被特殊对待并用来决定哪一个方法(如果有多个同名方法)会被调用。在许多语言中,这个特殊的参数是在语法上指明的,许多编程语言在调用方法时把特殊参数放在小圆点(.)之前。例如 special.method(other, arguments, here)
,这样 lion.sound()
将会发出狮吼,同时 sparrow.sound()
只会吱吱地叫。一般来说,对于面向对象的编程语言,这个小圆点之前的参数(上例中的lion和sparrow)被称为receiver[1]。
相反,在实现了多分派的语言中,被调用的函数即是那些参数个数一样多并且类型也匹配的调用。在调用中并没有特殊参数来决定那个方法被调用。也就是说,所有参数的运行时类型都参与分派。
Common Lisp Object System (CLOS) 是早期和著名的多分派语言。
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.