Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

[Ruby] Co zwróci wynik dodawania 10.5 i 10?

Okładka posta: [Ruby] Co zwróci wynik dodawania 10.5 i 10?
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Dość proste na pierwszy rzut oka pytanie może pojawić się na rozmowie kwalifikacyjnej na stanowisko junior ruby dev. Co zwróci wynik dodawania 10.5 i 10? Gdzie tkwi haczyk?
10.5 + 10
Rozważmy przykład. Jaka jest różnica między 10.5 a 10? Zwróć uwagę na .5, czyli na przecinek dziesiętny. Sprawdźmy klasy tych dwóch obiektów.
10.5.class
=> Float
10.class
=> Integer
Oto haczyk. Dodajemy obiekty dwóch klas. Jaki będzie wynik, jeśli dodamy Float i Integer?
(10.5 + 10).class
=> Float
To znaczy, że po dodaniu Float i Integer otrzymamy Float. Co to oznacza? Oznacza to, że w obecności przecinka - wynik będzie z przecinkiem.
10.5 + 10
=> 20.5
Aby to udowodnić - możemy napisać testy. Sprawdzimy również, czy otrzymamy obiekt klasy Integer, jeśli dodamy 10 + 10.
Stwórzmy plik operations_spec.rb:
require 'rspec'

RSpec.describe 'Operacje dodawania' do
  context 'gdy dodajemy Float i Integer' do
    it 'zwraca Float' do
      result = 10.5 + 10
      expect(result).to be_a(Float)
      expect(result).to eq(20.5)
    end
  end

  context 'gdy dodajemy Integer i Integer' do
    it 'zwraca Integer' do
      result = 10 + 10
      expect(result).to be_a(Integer)
      expect(result).to eq(20)
    end
  end
end
Uruchamiamy i otrzymujemy wynik, który potwierdza wszystko, o czym pisaliśmy powyżej.
rspec operations_spec.rb
..

Finished in 0.01617 seconds (files took 0.31407 seconds to load)
2 examples, 0 failures
Wszystko jest dość proste. Ale musisz znać te niuanse.

Ten post nie ma jeszcze żadnych dodatków od autora.

Jaka jest różnica między nil a false w Ruby?
29 maj 20:59

Jaka jest różnica między nil a false w Ruby?

meme code
meme code@memecode
Dlaczego pusty ciąg (string) w Ruby nie jest fałszem?
31 maj 14:39

Dlaczego pusty ciąg (string) w Ruby nie jest fałszem?

meme code
meme code@memecode
Zakres widoczności zmiennej lokalnej w Ruby
3 cze 16:46

Zakres widoczności zmiennej lokalnej w Ruby

meme code
meme code@memecode
Czym różni się int od bigint w Ruby? Minimalne i maksymalne wartości.
13 cze 06:37

Czym różni się int od bigint w Ruby? Minimalne i maksymalne wartości.

meme code
meme code@memecode
Co oznacza błąd 'is out of range' w Ruby on Rails? Błąd zakresu - Liczba całkowita z limitem 4 bajtów
13 cze 07:18

Co oznacza błąd 'is out of range' w Ruby on Rails? Błąd zakresu - Liczba całkowita z limitem 4 bajtów

meme code
meme code@memecode
Czym jest niemutowalność i mutowalność?
19 cze 07:48

Czym jest niemutowalność i mutowalność?

meme code
meme code@memecode
[Ruby] Czym różnią się zmienne zaczynające się od @, @@ i $?
23 cze 14:00

[Ruby] Czym różnią się zmienne zaczynające się od @, @@ i $?

meme code
meme code@memecode
Co to jest funkcja w programowaniu?
24 cze 18:15

Co to jest funkcja w programowaniu?

meme code
meme code@memecode
[Fix] extconf.rb nie powiódł się podczas instalacji biblioteki Ruby Gosu
27 cze 16:38

[Fix] extconf.rb nie powiódł się podczas instalacji biblioteki Ruby Gosu

meme code
meme code@memecode
Jak zrobić pusty commit w gicie?
28 cze 08:33

Jak zrobić pusty commit w gicie?

meme code
meme code@memecode
Biblioteka Ruby Gosu do tworzenia gier 2D
29 cze 08:48

Biblioteka Ruby Gosu do tworzenia gier 2D

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

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

meme code
meme code@memecode