Aan de slagGa gratis aan de slag

Multiple dispatch

Multiple dispatch is een van Julia’s grote voordelen. Het geeft je programma’s flexibiliteit en snelheid. Onthoud: met multiple dispatch kun je een andere methode uitvoeren op basis van het type van het argument dat aan een functie wordt doorgegeven.

In het voorbeeld in de video werd multiple dispatch gebruikt om een andere waarde terug te geven, afhankelijk van of het argumenttype een string was of niet.

function add_values(x, y)
    x + y
end

function add_values(x::String, y::String)
    x * y
end

Deze oefening maakt deel uit van de cursus

Julia voor gevorderden

Cursus bekijken

Oefeninstructies

  • Maak een functie largest_value die:
    • als de invoer String is, map gebruikt om de functie length toe te passen op elk argument (x, y, z).
    • als de invoer Bool is, simpelweg de argumenten teruggeeft.
    • als de invoer een ander type is, de maximumwaarde van alle waarden bepaalt met maximum.
  • Verwijder de uitcommentaar­de regels onderaan (de testcases) en zorg dat de logica klopt!

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Create three functions to handle any input, String input, and Bool input
function largest_value(x, y, z)
  maximum((____, ____, ____))
end

function largest_value(x::____, y::____, z::____)
  map(length, (____, ____, ____))
end

function largest_value(x::____, y::____, z::____)
  x, y, z
end

# Un-comment this test case to test your function
#println(largest_value("12", "24", "36"))
Code bewerken en uitvoeren