Аргументы по умолчанию в методах ruby статичны?Это имеет значение, когда аргументы по умолчанию означают динамическую дату, например Date.today
.Рассмотрим следующий пример в приложении rails:
class User < ApplicationRecord
def eligible_to_vote?(date_of_interest = Date.today)
p date_of_interest
end
end
Будет ли дата по умолчанию date_of_interest
всегда совпадать со статической датой с момента запуска сервера rails?
Или: будет ли он всегда динамически захватывать «сегодняшнюю дату» в контексте даты, когда был вызван метод eligible_to_vote?
?
Я знаю, что следующее наверняка динамически захватит Date.today
:
# Always dynamically sets `date` variable when no argument passed in
class User < ApplicationRecord
def eligible_to_vote?(date_of_interest = nil)
date = date_of_interest.present? ? date_of_interest : Date.today
p date_of_interest
end
end
Больше всего меня интересует, генерируются ли аргументы метода по умолчанию динамически или нет.Каким бы ни был ответ, было бы неплохо иметь официальную ссылку, чтобы ответить и на этот вопрос.Спасибо!