Я разработчик Java, который только начинает изучать Ruby. Есть ли у Ruby какие-то примитивные типы? Кажется, я не могу найти их список. Если нет, то почему?
Существуют ли примитивные типы в Ruby?
Ответ 1
Основной принцип Ruby заключается в том, что все данные должны быть представлены как объекты. Другие языки, такие как Smalltalk, следуют аналогичной парадигме.
Преимущество этого дизайна в том, что он делает Ruby более элегантным и понятным. Правила, применяемые к объектам, последовательно применяются ко всему Ruby.
Например, когда новички впервые изучают Java, разница между примитивным типом int и классом-оболочкой Integer может сбивать с толку. Эта путаница усугубляется иногда запутывающими неявными преобразованиями между ними через autoboxing.
Так почему же языки, такие как Java или С#, беспокоятся о примитивных типах? Ответ - это производительность. Создание объектов требует дополнительных накладных расходов по сравнению с примитивами.
Ответ 2
В Ruby нет примитивных типов данных. Каждое значение является объектом, даже литералы превращаются в объекты:
nil.class #=> NilClass
true.class #=> TrueClass
'foo'.class #=> String
100.class #=> Fixnum
0x1a.class #=> Fixnum
0b11010.class #=> Fixnum
123.4.class #=> Float
1.234e2.class #=> Float
Это позволяет вам писать красивый код:
3.times do
puts "Hello from Ruby"
end
Ответ 3
Цитата из О Ruby
В Ruby все является объектом. Каждому биту информации и кода могут быть предоставлены собственные свойства и действия.
Во многих языках числа и другие примитивные типы не являются объектами. Ruby следует за влиянием языка Smalltalk, предоставляя методы и переменные экземпляра всем его типам. Это упрощает использование Ruby, поскольку правила, применяемые к объектам, относятся ко всему Ruby.
Java решает сохранить некоторые примитивные типы в основном для производительности, но вы должны признать, что не каждый тип класса делает код Java немного неудобным. Философия Ruby заключается в том, чтобы сделать программист дней проще, я думаю, что создание всего объекта является одним из способов достижения этого.