Το Elixir αναπαριστά τις τιμές αληθής και ψευδής με τον τύπο Boolean (λογική τιμή). Υπάρχουν μόνο δύο τιμές: true και false. Αυτές οι τιμές μπορούν να δεσμευτούν σε μια μεταβλητή:
true_variable = true
false_variable = false
Μπορούμε να αξιολογήσουμε αυστηρές εκφράσεις Boolean χρησιμοποιώντας τους τελεστές and/2, or/2 και not/1.
true_variable = true and true
false_variable = true and false
true_variable = false or true
false_variable = false or false
true_variable = not false
false_variable = not true
Όταν γράφεις μια συνάρτηση που επιστρέφει μια τιμή Boolean, είναι ιδιωματικό να τελειώνεις το όνομα της συνάρτησης με ?. Την ίδια σύμβαση μπορείς να τη χρησιμοποιήσεις και για μεταβλητές που αποθηκεύουν τιμές Boolean.
def either_true?(a?, b?) do
a? or b?
end
Σε αυτή την άσκηση, πρέπει να μεταφράσεις μερικούς κανόνες από το κλασικό παιχνίδι Pac-Man σε συναρτήσεις Elixir.
Έχεις τέσσερις κανόνες να μεταφράσεις, όλοι σχετικοί με τις καταστάσεις του παιχνιδιού.
Μην ανησυχείς για το πώς προκύπτουν τα ορίσματα, απλώς επικεντρώσου στον συνδυασμό τους για να επιστρέψεις το επιθυμητό αποτέλεσμα.
Όρισε τη συνάρτηση Rules.eat_ghost?/2 που παίρνει δύο ορίσματα (αν ο Pac-Man έχει ένα ενεργό χάπι ενέργειας και αν ο Pac-Man αγγίζει ένα φάντασμα) και επιστρέφει μια Boolean τιμή (λογική τιμή) αν ο Pac-Man μπορεί να φάει το φάντασμα. Η συνάρτηση θα πρέπει να επιστρέφει την τιμή αληθής μόνο αν ο Pac-Man έχει ένα ενεργό χάπι ενέργειας και αγγίζει ένα φάντασμα.
Rules.eat_ghost?(false, true)
# => false
Όρισε τη συνάρτηση Rules.score?/2 που παίρνει δύο ορίσματα (αν ο Pac-Man αγγίζει ένα χάπι ενέργειας και αν ο Pac-Man αγγίζει μια κουκκίδα) και επιστρέφει μια Boolean τιμή αν ο Pac-Man σκόραρε. Η συνάρτηση θα πρέπει να επιστρέφει την τιμή αληθής αν ο Pac-Man αγγίζει ένα χάπι ενέργειας ή μια κουκκίδα.
Rules.score?(true, true)
# => true
Όρισε τη συνάρτηση Rules.lose?/2 που παίρνει δύο ορίσματα (αν ο Pac-Man έχει ένα ενεργό χάπι ενέργειας και αν ο Pac-Man αγγίζει ένα φάντασμα) και επιστρέφει μια Boolean τιμή αν ο Pac-Man χάνει. Η συνάρτηση θα πρέπει να επιστρέφει την τιμή αληθής αν ο Pac-Man αγγίζει ένα φάντασμα και δεν έχει ενεργό χάπι ενέργειας.
Rules.lose?(false, true)
# => true
Όρισε τη συνάρτηση Rules.win?/3 που παίρνει τρία ορίσματα (αν ο Pac-Man έχει φάει όλες τις κουκκίδες, αν ο Pac-Man έχει ένα ενεργό χάπι ενέργειας και αν ο Pac-Man αγγίζει ένα φάντασμα) και επιστρέφει μια Boolean τιμή αν ο Pac-Man κερδίζει. Η συνάρτηση θα πρέπει να επιστρέφει την τιμή αληθής αν ο Pac-Man έχει φάει όλες τις κουκκίδες και δεν έχει χάσει με βάση τα ορίσματα που ορίζονται στο μέρος 3.
Rules.win?(false, true, false)
# => false
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.