Подтвердить что ты не робот

Существуют ли примитивные типы в Ruby?

Я разработчик Java, который только начинает изучать Ruby. Есть ли у Ruby какие-то примитивные типы? Кажется, я не могу найти их список. Если нет, то почему?

4b9b3361

Ответ 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 заключается в том, чтобы сделать программист дней проще, я думаю, что создание всего объекта является одним из способов достижения этого.