Ένα από τα βασικά σημεία όταν δουλεύεις με αριθμούς στη Ruby είναι η διάκριση ανάμεσα στους ακέραιους (αριθμούς χωρίς ψηφία μετά το δεκαδικό διαχωριστικό) και τους αριθμούς κινητής υποδιαστολής (αριθμούς με μηδέν ή περισσότερα ψηφία μετά το δεκαδικό διαχωριστικό).
Υλοποιούνται μέσα από τις κλάσεις Integer και Float.
a = 1
b = 1.0
a.class
#=> Integer
b.class
#=> Float
+, -, *, /).
Οι αριθμοί μπορούν να συγκριθούν με τους κλασικούς τελεστές σύγκρισης.Integer έχουν πάντα ως αποτέλεσμα ένα στιγμιότυπο Integer.Float έχουν ως αποτέλεσμα άλλα στιγμιότυπα Float.Integer και σε στιγμιότυπα Float έχουν ως αποτέλεσμα στιγμιότυπα Float.Float και Integer έχουν μεθόδους που μετατρέπουν τιμές από τη μία στην άλλη.
Οι αριθμοί Integer είναι ακριβείς ως προς την ακέραιη μονάδα, ενώ το Float έχει κλασματική ακρίβεια ως προς έναν ακέραιο αριθμό.
Αυτό σημαίνει ότι η μετατροπή ενός float σε integer μπορεί να οδηγήσει σε απώλεια ακρίβειας.4.9.to_i
#=> 4
5.to_f
#=> 5.0
7 - 3.0
#=> 4.0
2 == 4
#=> false
1.0 == 1
#=> true
Μια εντολή if μπορεί να χρησιμοποιηθεί για να εκτελέσεις κώδικα υπό συνθήκη:
x = 5
if x == 5
# Execute logic if x equals 5
elsif x > 7
# Execute logic if x greater than 7
else
# Execute logic in all other cases
end
Κάποιες φορές θέλεις να εκτελέσεις μια εντολή (ή εντολές) αν μια συνθήκη δεν είναι αληθής. Για τέτοιες περιπτώσεις, η Ruby υλοποιεί τη λέξη-κλειδί unless:
x = 4
unless x == 5
# Execute logic if x does not equal 5
else
# Execute logic if x == 5
end
Αν θέλεις να εκτελέσεις διαφορετικό κώδικα ανάλογα με την τιμή μιας μεταβλητής, η εντολή case της Ruby μπορεί να σου φανεί χρήσιμη:
y = 5
case y
when 3
# Execute logic if y equals 3
when 5
# Execute logic if y equals 5
else
# Execute logic in all other cases
end
Το ίδιο πρόβλημα μπορεί μερικές φορές να λυθεί με διαφορετικούς τύπους εντολών υπό συνθήκη, και κάποιες φορές η μία ταιριάζει καλύτερα στο πρόβλημα από την άλλη. Καλό είναι να σταματάς για λίγο και να εξετάζεις και τις άλλες δύο επιλογές όταν χρησιμοποιείς οποιαδήποτε από τις τρεις εντολές υπό συνθήκη.