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

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

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

Обкладинка нотатки: [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
Все доволі просто. Але ви маєте знати ці нюанси.

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

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

📝 Більше публікацій: