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 делает это - это решение для языкового дизайна Во многих случаях это помогает отследить простые ошибки, когда вы просто передаете неправильные аргументы. На языке, который не применяет это, вы получите ошибку типа или неопределенную изнутри метода, которую сложнее определить по основной причине. ИМХО Матц понял это правильно.

Другие вопросы по тегам