Рубиновая разница между целочисленными методами - PullRequest
0 голосов
/ 10 мая 2009

В чем разница между

10.6.to_i

и

10.6.to_int

Ответы [ 2 ]

6 голосов
/ 10 мая 2009

Это прекрасно объясняется здесь :

Прежде всего, ни to_i, ни to_int не предназначены для того, чтобы делать что-то более необычное, чем другие. Как правило, эти два метода не сильно отличаются друг от друга по своей реализации, они отличаются только тем, что объявляют внешнему миру. Метод to_int обычно используется с условными выражениями и должен пониматься следующим образом: «Может ли этот объект всегда рассматриваться как вещественное целое число?»

Метод to_i обычно используется для фактического преобразования, и его следует понимать так: «Дайте мне наиболее точное целочисленное представление этого объекта, пожалуйста»

Например, String - это класс, который реализует to_i, но не реализует to_int. Это имеет смысл, потому что строка сама по себе не может рассматриваться как целое число. Однако в некоторых случаях он может иметь представление в целочисленной форме. Если мы напишем x = «123», мы вполне можем сделать x.to_i и продолжить работу с полученным экземпляром Fixnum. Но это сработало только потому, что символы в x можно было перевести в числовое значение. Что если бы мы написали: x = «лошадь снаружи смешная»? Правильно, строку просто нельзя постоянно считать целым числом.

0 голосов
/ 10 мая 2009

Разницы нет. Они являются синонимами.

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