2015-06-19 2 views

ответ

3

Звездочка * в *opts НЕ является указателем (как на C/C++). В Ruby нет такой концепции указателя.


При определении метода он используется для splatting. Например:

def foo(first, *rest) 
    "first=#{first}. rest=#{rest.inspect}" 
end 

puts foo("1st", "2nd", "3rd") 
# => first=1st. rest=["2nd", "3rd"] 

При вызове метода, он используется, чтобы расширить аргумент. Например:

arr = ["2nd", "3rd"] 
bar("1st", *arr) 

эквивалентно:

bar("1st", "2nd", "3rd") 
+0

Заметим, что '* opts' появляется в вопросе как в подписи метода, но и в вызове' to_json' – user12341234

+0

@ user12341234 Обновлено в настоящее время , –

Смежные вопросы