Нужно ли когда-либо использовать "chomp" перед использованием "to i" или "to f"?

Я вижу, что люди используют следующий код:

gets.chomp.to_i

или

gets.chomp.to_f

Я не понимаю, почему, когда результат этих строк всегда такой же, как когда нет chomp после gets.

Is gets.chomp.to_i действительно необходимо, или gets.to_i достаточно?

3 ответов


нет необходимости использовать chomp метод, потому что:

String#chomp возвращает новую строку с заданным разделителем записей, удаленным из конца str (если он присутствует). Если $/ не был изменен с разделителя записей Ruby по умолчанию, затем chomp также удаляет символы возврата каретки (то есть он удалит "\n", "\r" и "\r\n"). Вот некоторые примеры.

String#to_f возвращает результат интерпретации ведущих персонажей в str как число с плавающей запятой. Посторонние символы после окончания допустимого числа игнорируются. Если в начале , 0.0 возвращается. Этот метод никогда не вызывает исключения. Вот некоторые примеры на to_f.


из документации строка#to_i:

возвращает результат интерпретации ведущих символов в str как число базового (между 2 и 36). посторонние символы мимо конец допустимого числа игнорируется. Если нет действительного номера на возвращается начало str, 0

строка#to_f ведет себя так же, исключая, конечно, базу числа.

посторонние символы после окончания допустимого числа игнорируются, это будет включать новую строку. Так что нет необходимости использовать chomp.


по моему мнению, он работает одинаково в любом случае, поэтому нет необходимости в chomp после gets Если вы собираетесь сразу делать to_i или to_f.

на практике я никогда не видел ошибки или другого поведения Из-за ухода chomp вне очереди.

Я нахожу это отвлекающим, когда вижу, что он используется в ответах, и в этом нет абсолютно никакой необходимости. Он не добавляет к "стилю", и это, как утверждает @TheTinMan, впустую CPU циклы.