functions 4: More default arguments
Before this blog please read functions 3: Default Argument
In the previous blog we have seen functions with default argument, now let’s see more of it. See the below program, type it and execute it:
function printline3(length = 50, character = '*')
println(character ^ length)
end
printline3()
printline3(10)
printline3(20, '#')
Output:
**************************************************
**********
####################
You see a function that’s starts with a definition like this function printline3(length = 50, character = '*')
, and you see you can call it in three ways like without any argument like this:
printline3()
where the length
defaults to 50
and character
defaults to '*'
. You can call it with a single argument like this:
printline3(10)
where the length
becomes 10
but the character defaults to '*'
. You can call it like this:
printline3(20, '#')
Where we vary both length
and character
away from the default values. But what if you want a function where you just vary the character
alone so that it can be called like printline3('>')
, currently it cannot be done. So look at the new function definition of printline4
below, type it and execute it.
function printline4(length = 50, character = '*')
println(character ^ length)
end
function printline4(char::Char)
printline4(50, char)
end
printline4()
printline4(30)
printline4('#')
printline4(25, '>')
Output:
**************************************************
******************************
##################################################
>>>>>>>>>>>>>>>>>>>>>>>>>
Note the calls printline4()
, printline4(30)
and printline4(25, '>')
are taken care by this definitions:
function printline4(length = 50, character = '*')
println(character ^ length)
end
Now for this printline4('#')
, we define a another printline4()
function like this:
function printline4(char::Char)
printline4(50, char)
end
This function takes in a character as argument, and it intelligently passes it to printline4(50, char)
. So you can learn few things from these, that is:
- A function can call another function.
printline4(char::Char)
callsprintline4(length = 50, character = '*')
in the above case. - A function with same name can have multiple definitions.
- Julia calls the reads an executes the appropriate definition depending on the type and number of arguments passed.
The Jupyter notebook for this blog is available here https://gitlab.com/data-science-with-julia/code/-/blob/master/functions.ipynb.