I see in the 
manual 
http://docs.julialang.org/en/latest/manual/methods/#note-on-optional-and-keyword-arguments
 
that:

"Keyword arguments behave quite differently from ordinary positional 
arguments. In particular, they do not participate in method dispatch. 
Methods are dispatched based only on positional arguments, with keyword 
arguments processed after the matching method is identified."

I don't think you defined 2 different methods. You defined one method 
taking no positional arguments and a bunch of keyword arguments. Then you 
overwrote that method.

On Saturday, January 30, 2016 at 11:37:51 AM UTC-5, Daniel Carrera wrote:
>
> This is very weird. It looks like multiple dispatch doesn't work at least 
> in some cases. Look:
>
> julia> semimajor_axis(;M=1,P=10) = (P^2 * M)^(1/3)
> semimajor_axis (generic function with 1 method)
>
> julia> semimajor_axis(;α=25,mp=1,M=1,d=10) = α * d * M/mp / 954.9
> semimajor_axis (generic function with 1 method)
>
> julia> semimajor_axis(M=3,P=10)
> ERROR: unrecognized keyword argument "P"
>
>
> I do understand that it may be risky to have two functions with the same 
> name and different named parameters (I really wish Julia allowed me to make 
> some/all named parameters mandatory), but I was expecting that my code 
> would work. I clearly defined a version of the function that has a named 
> parameter called "P".
>
> Does anyone know why this happens and what I can do to fix it? Am I 
> basically required to either use different function names, or give up on 
> using named parameters for everything?
>
> Cheers,
> Daniel.
>

Reply via email to