Я пишу процедуру, которая сравнивает строку с списком объектов, каждая из которых может быть либо другой строкой, либо RegExp. Есть ли элегантный, рубино-ориентированный способ справиться с этим?Ruby: сопоставление строки с другим объектом, который может быть строкой или регулярным выражением
В настоящем время, я делаю что-то вроде этого:
def compare(str, thelist)
thelist.any? do |item|
case str
when item then true
else false
end
end
end
if compare("The String I am testing", ['I am not', /string/i])
# got a match
Это, кажется, работает достаточно хорошо, но он чувствует себя немного слишком hackerish и долго наматываются на мой вкус, так что я просто интересно, если есть лучший способ сделать это. (Я не заинтересован в использовании что-то вроде instance_of -?. Я пришел с этим решением, потому что instance_of слишком некрасиво)
Работа с Рубином 2.2.2
Заранее спасибо ...
Тестирование Ty pes всегда кажется мне показателем того, что что-то не так с точки зрения дизайна, поэтому я избегаю этого, когда могу, особенно когда есть более естественный способ справиться с вещами. –