В гем я работаю, я нашел фрагмент кода:Что означает «с (& block)» в Ruby?
@object.with(&block)
Но метод with(&block)
не определен в проекте. Похоже, он определен как базовый метод внутри Ruby somwhere, но я не уверен.
Что это значит? Может ли кто-нибудь указать, где этот метод определен (например, в Object или Class или каком-либо другом классе Ruby)?
Edit:
Код в вопросе:
def self.redis(&block)
raise ArgumentError, "requires a block" if !block
@redis ||= Sidekiq::RedisConnection.create(@hash || {})
@redis.with(&block)
end
Это от проекта Sidekiq (https://github.com/mperham/sidekiq). Этот проект также включает жемчужину redis-rb
(https://github.com/redis/redis-rb). Я не могу найти метод with
, определенный в любом из них.
Возможно, я просто что-то упустил.
возможный дубликат [Что это и блок в Ruby? И как он передается в методе здесь?] (Http://stackoverflow.com/questions/814739/whats-this-block-in-ruby-and-how-does-it-get-passed-in-a -method-here) – fotanus
Я понимаю, что такое '& block' - это метод' .with', о котором я спрашиваю. –
Я рассмотрел связанный вопрос, и он совсем не адресует определение метода '.with'. –