Некоторые строки, заканчивающиеся на "; 1" в устаревшем коде Rails - PullRequest
0 голосов
/ 21 мая 2018

Эй, ребята из Stack Overflow,

Мне нужна ваша помощь в этом.В течение нескольких месяцев я имею дело с приложением Ruby on Rails, которое в основном является Legacy.Сегодня я заметил самую странную вещь в кодовой базе.Некоторые файлы, не так много, но значимые, содержат несколько строк кода, которые заканчиваются на ; 1.Как например: Users.find(id); 1.Появление этих суффиксов не создает никакой формы шаблона.Иногда ; 1 появляется после puts или после выражения, которое всегда будет возвращать значение, например nil || 'default_value'; 1.

Имеет ли смысл использовать суффикс?Есть ли причина этого?Может быть, раньше был инструмент, который работал с кодом Ruby, а ; 1 был формой аннотации.Я бы с удовольствием удалил суффикс, но хочу убедиться, что он на 100% безопасен.

Вот пример кода из проекта, добавленного в тот же коммит:

times = events.map{|x| [x.time, x.time_from_impression_id]};1
times = times.map{|x| (x.first - x.last) / 1.day}.sort;1
time_to_event_success = times[(times.length.to_f * 0.95).to_i]
events = events.select{|e| e.time_from_impression_id < time_to_event_success.days.ago};1

1 Ответ

0 голосов
/ 21 мая 2018

Точки с запятой в ruby ​​завершают операторы так же, как и разрыв строки.; 1 на самом деле не делает ничего полезного.

Логически код, который вы разместили, эквивалентен:

times = events.map{|x| [x.time, x.time_from_impression_id]}
1
times = times.map{|x| (x.first - x.last) / 1.day}.sort
1
time_to_event_success = times[(times.length.to_f * 0.95).to_i]
events = events.select{|e| e.time_from_impression_id < 
time_to_event_success.days.ago}
1

Единственное, о чем я могу думать, это то, что если кто-то тестировалкод в IRB, добавляющий ; 1 в конец строки, предотвратит отображение возвращаемого значения предыдущего оператора.Это или они не совсем понимали, как неявное возвращение, а также истинные и ложные значения работают в рубине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...