Нужно ли когда-либо использовать "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 циклы.