Possible Duplicate:
What is the * operator doing to this string in Ruby
Probably there is answer for that elsewhere, but I just don't know how to find it...
If I am right, the *
means multiple parameters if used in function definition:
def hero(name, *super_powers)
But what does *
do in the code like this:
Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}
A ruby is considered a Star Ruby when a three-point or six-point asterism, or star if you will, appears within the stone. This star is created when tiny fibers of rutile, also known as “silk,” have light reflected off of them in such a way that a star shape is formed.
The * is the splat operator. It expands an Array into a list of arguments, in this case a list of arguments to the Hash. [] method. (To be more precise, it expands any object that responds to to_ary / to_a , or to_a in Ruby 1.9.)
In the code you posted, *args simply indicates that the method accepts a variable number of arguments in an array called args . It could have been called anything you want (following the Ruby naming rules, of course).
i know that the '?' in ruby is something that checks the yes/no fulfillment.
Variable Length Argument List, Asterisk Operator
The last parameter of a method may be preceded by an asterisk(*), which is sometimes called the 'splat' operator. This indicates that more parameters may be passed to the function. Those parameters are collected up and an array is created.
The asterisk operator may also precede an Array argument in a method call. In this case the Array will be expanded and the values passed in as if they were separated by commas.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With