У меня есть следующий метод и хотите сделать его более удобным для чтения:Рефакторинг reply_to? заехать, если-ELSIF-то еще условие
def value_format(value)
if value.respond_to? :to_actor
value.to_actor
elsif value.respond_to? :to_subject
value.to_subject
elsif value.respond_to? :to_json
value.to_json
elsif value.respond_to? :to_hash
value.to_hash
else
value.inspect
end
end
Это мое решение. Как вы думаете?
def value_format(value)
methods = [:to_actor, :to_subject, :to_json, :to_hash, :inspect]
value.send(methods.find_all { |m| m if value.respond_to? m }.first)
end
Он он, та же идея, то же самое время. Обратите внимание, что аргумент 'find' должен быть' Proc' или 'lambda'. –
@ Marc-André Lafortune: Ваш ответ был немного раньше. Кроме того, я не понимал, что о аргументе «найти» ... Я бы лучше подумал о вашей версии. –