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