All original content is created in Ukrainian. Not all content has been translated yet. Some posts may only be available in Ukrainian.Learn more

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

Post cover: [Ruby] Що повернеться в результаті складання 10.5 та 10?
This content has not been translated yet.We're showing the original Ukrainian content below.
Доволі просте на перший погляд питання може бути на співбесіді на 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
Все доволі просто. Але ви маєте знати ці нюанси.

This post doesn't have any additions from the author yet.

Яка різниця між nil і false в Ruby?
29 May 20:59

Яка різниця між nil і false в Ruby?

meme code
meme code@memecode
Чому порожній рядок (string) у Ruby не є false?
31 May 14:39

Чому порожній рядок (string) у Ruby не є false?

meme code
meme code@memecode
Область видимості локальної змінної в Ruby
03 Jun 16:46

Область видимості локальної змінної в Ruby

meme code
meme code@memecode
Чим відрізняється int та bigint в Ruby? Мінімальні та максимальні значення.
13 Jun 06:37

Чим відрізняється int та bigint в Ruby? Мінімальні та максимальні значення.

meme code
meme code@memecode
Що означає помилка 'is out of range' в Ruby on Rails? Range Error - Integer with limit 4 bytes
13 Jun 07:18

Що означає помилка 'is out of range' в Ruby on Rails? Range Error - Integer with limit 4 bytes

meme code
meme code@memecode
Що таке імутабільність та мутабільність?
19 Jun 07:48

Що таке імутабільність та мутабільність?

meme code
meme code@memecode
[Ruby] Чим відрізняються змінні, що починаються з @, @@ та $?
23 Jun 14:00

[Ruby] Чим відрізняються змінні, що починаються з @, @@ та $?

meme code
meme code@memecode
Що таке функція в програмуванні?
24 Jun 18:15

Що таке функція в програмуванні?

meme code
meme code@memecode
[Фікс] extconf.rb failed під час встановлення Ruby-бібліотеки Gosu
27 Jun 16:38

[Фікс] extconf.rb failed під час встановлення Ruby-бібліотеки Gosu

meme code
meme code@memecode
How to make an empty git commit?
28 Jun 08:33

How to make an empty git commit?

meme code
meme code@memecode
Ruby-бібліотека Gosu для створення 2D-ігор
29 Jun 08:48

Ruby-бібліотека Gosu для створення 2D-ігор

meme code
meme code@memecode
Gosu Ruby Tutorial - пройдемось по офіційній документації
03 Jul 11:50

Gosu Ruby Tutorial - пройдемось по офіційній документації

meme code
meme code@memecode