When writing a piece of code, it is inevitable to make certain functions, and t is usually a good programming practice to name the functions to match their functionality. For example, if you are making a function to join two strings, you might consider naming it
Often, multiple functions are essentially doing the same thing with a little bit of change. Is it possible to keep the name of all these functions similar? Yes, possible using multiple dispatch.
Multiple dispatch is a feature supported by some programming languages that allows you to create multiple functions with the same name. The multiple forms of branching from the same function name are called methods. Below is a list of languages that support multiple dispatch.
|Method of Support||Programming Language|
|Built-in multiple dispatch||C#, Common Lisp, Julia, Raku|
|Emulating multiple dispatch||C, C++, D, Java|
Let’s look at how multiple dispatch works using Julia:
function concat_this(a::AbstractString, b::AbstractString) return a*" "*b end function concat_this(a::Real, b::AbstractString) return string(a)*" "*b end function concat_this(a::AbstractString, b::Real) return a*" "*string(b) end function concat_this(a::Real, b::Real) return string(a)*" "*string(b) end println(concat_this("abra", "kadabra")) println(concat_this("123", "kadabra")) println(concat_this("abra", "456")) println(concat_this("123", "456")) println(methods(concat_this))
The code above has three methods of a function named
Usually, if we make one function for it then we might face problems when we concatenate strings with numbers. Therefore, we made four functions to cater for all the possible concatenations between strings and numbers. Now, we can go ahead and call
concat_this, pass a string or number as either the first or second argument, and get a concatenated string back. Moreover, we can look at the list of function’s methods using the
methods() method of Julia.
View all Courses