Despacho múltiple en Julia
Un nombre de función; el método se elige por el tipo de cada argumento.
# One function name, one method per argument signature: dispatch
# picks by the types of every argument, not just the first.
describe(m::Real) = "magnitude $m"
describe(name::String) = "target $name"
describe(name::String, m::Real) = "$name at magnitude $m"
println(describe(4.2))
println(describe("Altair"))
println(describe("Altair", 0.76))
# methods() shows the table dispatch chooses from.
println(length(methods(describe)), " methods defined")
Cómo funciona
- Tres métodos
describedifieren solo en las firmas. - Las llamadas rutean por tipo: un Real, un String, o el par.
methods(describe)lista la tabla de la que el despacho elige.
Palabras clave y builtins usados aquí
RealString
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 450
- Tokens
- 82
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 70 segundos.
Paso 2 de 3 en Funciones; paso 8 de 27 en Fundamentos del lenguaje.