Подтвердить что ты не робот

Наиболее краткий способ проверки равенства строк (а не равенства объектов) для строк или символов Ruby?

Я всегда делаю это для проверки равенства строк в Ruby:

if mystring.eql?(yourstring)
 puts "same"
else
 puts "different"
end

Это правильный способ сделать это без проверки равенства объектов?

Я ищу наиболее сжатый способ тестирования строк на основе их содержимого.

С круглыми скобками и вопросительным знаком это кажется немного неуклюжим.

4b9b3361

Ответ 2

Ваш образец кода не расширился на часть вашей темы, а именно символы, и поэтому часть вопроса осталась без ответа.

Если у вас две строки: foo и bar, и оба могут быть либо строкой, либо символом, вы можете проверить равенство с помощью

foo.to_s == bar.to_s

Немного более эффективно пропускать преобразования строк в операндах с известным типом. Поэтому, если foo всегда является строкой

foo == bar.to_s

Но выигрыш в эффективности почти наверняка не стоит требовать дополнительной работы от имени вызывающего абонента.

До Ruby 2.2 избегайте использования неконтролируемых входных строк для сравнения (со строками или символами), поскольку символы не собираются в мусор, и поэтому вы можете открыть себя для отказа в обслуживании за счет исчерпания ресурсов. Ограничьте использование символов знаками, которыми вы управляете, т.е. Литералы в вашем коде и надежные свойства конфигурации.

Ruby 2.2 ввел сбор мусора символов.