def respond_to?(method, include_private = false)
super || @subject.respond_to?(method, include_private)
end
||
является оператором or
, так что же означает ||
между методами?Что делает || между методами?
Будет ли всегда вызывать super
если только super
возвращает NIL, то оценить @subject.respond_to
из-за короткого замыкания для оператора ||
?
Редактировать: Я думаю, что мой вопрос не является дубликатом, потому что я знаю, как «||» оператор работает с другими языками программирования. Я знаю, что такое короткое замыкание. Я просто никогда не видел, чтобы он использовался только с двумя способами, без каких-либо утверждений.
Да, это в основном правильно. За исключением того, что 'false' также является ложным значением. –
Это верно, если унаследованный/родительский класс определяет response_to или возвращает nil или false, тогда будет оцениваться '@ subject.respond_to?'. – codyeatworld
Возможный дубликат [Понимание «||» OR в условных выражениях If в Ruby] (http://stackoverflow.com/questions/1554340/understanding-the-or-operator-in-if-conditionals-in-ruby) – halfelf