signup(name,email)
Named parameters can help out so that you don't have to remember the order of parameters. As a fringe benefit the code can read a bit nicer and you can add in new optional parameters without breaking existing code.
Ruby as a language doesn't support named parameters to functions. But it does support converting named pairs into a hash if you provide an argument for it.
def signup(params)
name=params[:name]
email=params[:email]
...
end
This takes a little more work on the function declaration but it's not too bad. Now we can call the function like this:
signup(:name=>'Me', :email=>'me@net.com')
Suppose you wanted your name parameter to be optional and default to the email parameter. You can easily set default values for one or more of your expected parameters:
def signup(params)
email=params[:email]
name=params[:name]||email
...
end
With named parameters it often behooves you to do a bit more parameter checking.
def signup(params)
email=params[:email] || raise("email parameter is required!")
name=params[:name]||email
...
end
To make all parameters optional, set a default value for your parameter to {}.
def optional(params={})