Order of arguments

if I define a function with several args. as

def func(foo, bar)

and is used with the changed args.:

func(bar=‘wrong’, foo=‘order’)*

it will change the order of args. and this is not desirable, how to
solve it?

I imagine this with a lot of args. and could be danger

Kless wrote:

func(bar=‘wrong’, foo=‘order’)

Supplementing Joel’s answer - that code is a Ruby fallacy and should be
avoided.
It does not name the arguments as they go in. It assigns two new
variables into
the calling scope - very confusingly.

Kless wrote:

I imagine this with a lot of args. and could be danger

Use a hash argument

def func(args={})
bar=args[:bar]
foo=args[:foo]
end

func(:bar=>1, :foo=>2)

Kless wrote:

it will change the order of args. and this is not desirable, how to
solve it?

It will not. In Ruby, the order of passed arguments is the order of
received arguments, always. Your struct, as it was said, defines two
useless local variables, and in fact passes them to the function.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs