Доволі просте на перший погляд питання може бути на співбесіді на 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
Все доволі просто. Але ви маєте знати ці нюанси.