I couldn’t find anything in the manual about optional arguments. The best workaround I could think is to make the function take a single argument and pass an array to it. Then it’s just a matter of dealing with different sizes of arrays inside the function:
fn print_args argument if eq 1 $len(@argument) echo @argument else if eq 2 $len(@argument) echo @argument echo @argument end end
fn print_args argument echo @argument $or(@argument "baz") end
I suppose this works for most cases. In a script I could pass @args to it and deal with flags that way. I think being able to specify default values for arguments could make things cleaner though.
I also found one situation where this is annoying: When setting up a convenience function in ~/.config/ion/initrc, it forces me to wrap the arguments in brackets or quotes every time I use it on the command line.