Обкладинка нотатки: [Ruby] Що повернеться в результаті складання 10.5 та 10?

[Ruby] Що повернеться в результаті складання 10.5 та 10?

Доволі просте на перший погляд питання може бути на співбесіді на junior ruby dev позицію. Що повернеться в результаті складання 10.5 та 10? В чому підступ?
10.5 + 10
Розберемо приклад. В чому різниця між 10.5 та 10? Зверніть увагу на .5, тобто на плаваючу крапку. Давайте перевіримо класи цих двох об'єктів.
10.5.class
=> Float
10.class
=> Integer
Ось і підступ. Ми складаємо об'єкти двох класів. Який буде результат якщо скласти Float та Integer?
(10.5 + 10).class
=> Float
Тобто після складання Float та Integer ми отримаємо Float. Що це означає? Це означає що при наявності крапки - результат буде с крапкою.
10.5 + 10
=> 20.5
Щоб довести це - можемо написати тести. Також перевіримо, чи ми отримаємо об'єкт класу Integer якщо скласти 10 + 10.
Створимо файл operations_spec.rb:
require 'rspec'

RSpec.describe 'Операції додавання' do
  context 'коли додаємо Float і Integer' do
    it 'повертає Float' do
      result = 10.5 + 10
      expect(result).to be_a(Float)
      expect(result).to eq(20.5)
    end
  end

  context 'коли додаємо Integer і Integer' do
    it 'повертає Integer' do
      result = 10 + 10
      expect(result).to be_a(Integer)
      expect(result).to eq(20)
    end
  end
end
Запускаємо й отримуємо результат, який підтверджує все те, про що ми писали вище.
rspec operations_spec.rb
..

Finished in 0.01617 seconds (files took 0.31407 seconds to load)
2 examples, 0 failures
Все доволі просто. Але ви маєте знати ці нюанси.
🤖 Категорії підібрані ШІ: Програмне забезпечення

🔗 Цитувати допис: "[Ruby] Що повернеться в результаті складання 10.5 та 10?"

Якщо ви хочете процитувати цей допис у своїй роботі, статті, блозі, використовуйте наведену нижче інформацію.

Розгорнути деталі


🙌 Підтримати блог @memecode

Ви можете поширити цей допис у соцмережах, чим допоможете платформі цейво розвиватись (* ^ ω ^)

📝 Більше публікацій:
Обкладинка нотатки: Яка різниця між nil і false в Ruby?
Обкладинка нотатки: Чому порожній рядок (string) у Ruby не є false?
Обкладинка нотатки: Область видимості локальної змінної в Ruby
Обкладинка нотатки: Чим відрізняється int та bigint в Ruby? Мінімальні та максимальні значення.
Обкладинка нотатки: Що означає помилка 'is out of range' в Ruby on Rails? Range Error - Integer with limit 4 bytes
Обкладинка нотатки: Що таке імутабільність та мутабільність?
Обкладинка нотатки: [Ruby] Чим відрізняються змінні, що починаються з @, @@ та $?
Обкладинка нотатки: Що таке функція в програмуванні?
Обкладинка нотатки: [Фікс] extconf.rb failed під час встановлення Ruby-бібліотеки Gosu
Обкладинка нотатки: Як зробити пустий git commit?
Обкладинка нотатки: Ruby-бібліотека Gosu для створення 2D-ігор
Обкладинка нотатки: Gosu Ruby Tutorial - пройдемось по офіційній документації
Дисклеймер

Інформація на сайті tseivo.com є суб'єктивною та відображає особисті погляди та досвід авторів та авторок блогів.

Використовуйте цей ресурс як одне з декількох джерел інформації під час своїх досліджень та прийняття рішень. Завжди застосовуйте критичне мислення. Людина сама несе відповідальність за свої рішення та дії.