rails api док синтаксис
ROR Api Dock всегда начинается с синтаксиса метода. Мой пример будет link_to:
link_to(name = nil, options = nil, html_options = nil, &block) public
Мой вопрос на "name=nil"
или же "something = nil"
который я вижу в большинстве команд.
Второй пример: url_for(options = nil)
Может кто-нибудь объяснить, в чем смысл этого или что он пытается сказать.. означает ли это, что этот вариант является необязательным?
Почему это важно..
1 ответ
Ruby, в отличие, например, от JavaScript или PHP, устанавливает количество аргументов, с которыми вызывается метод:
def foo(a,b)
end
Так что если вы позвоните foo
без аргументов Ruby выдаст исключение ArgumentError: wrong number of arguments (0 for 2)
,
Установив значение по умолчанию, вы помечаете аргумент как необязательный:
def foo(a = nil, b = nil)
end
призвание foo
без аргументов больше не будет выдавать ошибку.
Это часто используется для создания методов, которые могут принимать аргументы списка или хеш:
def foo(a = nil, b = nil, opts = {})
opts.each do |k,v|
puts "#{k} : #{v}"
end
end
Что касается того, почему Ruby делает это - это решение для языкового дизайна Во многих случаях это помогает отследить простые ошибки, когда вы просто передаете неправильные аргументы. На языке, который не применяет это, вы получите ошибку типа или неопределенную изнутри метода, которую сложнее определить по основной причине. ИМХО Матц понял это правильно.