Διαδρομές
/
Ruby
Ruby
/
Ασκήσεις
/
Τελευταία Διαθήκη
Τελευταία Διαθήκη

Τελευταία Διαθήκη

Άσκηση εκμάθησης

Εισαγωγή

Ένας σημαντικός τρόπος οργάνωσης του κώδικα είναι η χρήση χώρων ονομάτων. Οι κλάσεις και τα αρθρώματα παρέχουν χώρους ονομάτων. Δύο μέθοδοι μπορεί να έχουν σύγκρουση ονομάτων, η οποία μπορεί να λυθεί βάζοντάς τες σε διαφορετικούς χώρους ονομάτων. Οι χώροι ονομάτων μπορούν να είναι εμφωλευμένοι, κάτι που μπορεί να βοηθήσει στη δομή μεγάλων βάσεων κώδικα. Η πρόσβαση στους χώρους ονομάτων γίνεται μέσω του τελεστή προσδιορισμού εμβέλειας ::.

Το παρακάτω παράδειγμα δείχνει τη χρήση δύο διαφορετικών μεθόδων foo. Χρησιμοποιούνται μαζί, προτάσσοντας τους αντίστοιχους χώρους ονομάτων τους.

class MyNamespace
  def self.foo
    44
  end

  class MyInnerNamespace
    def self.baz
      90
    end
  end
end

class MyOtherNamespace
  def self.foo
    -2
  end
end

p MyNamespace::foo + MyOtherNamespace::foo * MyNamespace::MyInnerNamespace::baz  # => -136

Πρόσεξε ότι οι χώροι ονομάτων ερμηνεύονται με βάση το πού βρίσκεται ο κώδικας που εκτελείται. Για να αναφερθείς σε κάτι στον χώρο ονομάτων ρίζας (δηλαδή έξω από όλους τους ορισμένους χώρους ονομάτων), ξεκίνα με ::.

Για παράδειγμα:

class Example
  def self.example
    5
  end
end

class MyNamespace

  class Example
    def self.example
      10
    end
  end

  def self.call_example
    p Example::example  # => 10
    p ::Example::example  # => 5
  end
end

Οδηγίες

Εργάζεσαι σε ένα φημισμένο δικηγορικό γραφείο που ειδικεύεται σε μοναδικά αιτήματα διαθηκών.

Σε αυτή την άσκηση, θα ανοίξεις ένα μυστηριώδες θησαυροφυλάκιο. Είσαι ο εκτελεστής της κληρονομιάς και θα συνθέσεις τους επί μακρόν φυλαγμένους μυστικούς κωδικούς τριών οικογενειών για να πάρεις έναν αριθμό λογαριασμού και τον αντίστοιχο κωδικό.

Για να μην μπορεί καμία οικογένεια να ανοίξει το θησαυροφυλάκιο μόνη της, αυτό ανοίγει μόνο αν συνδυάσεις τις γνώσεις τους με έναν μυστικό τροποποιητή που γνωρίζεις από τη διαθήκη.

Έχεις τρεις εργασίες, όλες σχετικές με το να βοηθήσεις τις οικογένειες να ανοίξουν το θησαυροφυλάκιο.

Όρισε έναν χώρο ονομάτων με το όνομα EstateExecutor. Ο κώδικας από τις επόμενες εργασίες θα πρέπει να οριστεί στο σώμα του χώρου ονομάτων EstateExecutor.

class SomeName
  # The space between the class/module name
  # and the `end` keyword
  # is called body of the  namespace.
end

Αυτή είναι η μεγάλη σου στιγμή. Μόνο εσύ έχεις το μυστικό κλειδί τροποποιητή για να αποκαλύψεις τον μυστικό αριθμό λογαριασμού.

Όρισε τη μέθοδο assemble_account_number(secret_modifier) που παίρνει ως όρισμα τον μυστικό τροποποιητή Integer και επιστρέφει τον συναρμολογημένο αριθμό λογαριασμού Integer.

Για να πάρεις τον σωστό αριθμό, πρέπει να αθροίσεις το bank_number_part από καθεμία από τις τρεις οικογένειες.

Οι οδηγίες στη διαθήκη σου ζητούν να προσθέσεις πρώτα όλα τα μπλε και μετά όλα τα κόκκινα θραύσματα. Ο κωδικός που προκύπτει βγαίνει πολλαπλασιάζοντας τα δύο αθροίσματα.

Όρισε τη μέθοδο assemble_code που επιστρέφει τον κωδικό που προκύπτει, συνδυάζοντας τα θραύσματα από τις τρεις οικογένειες σε ένα μόνο αποτέλεσμα Integer. Η μέθοδος δεν παίρνει κανένα όρισμα και βασίζεται αποκλειστικά στις πληροφορίες που βρίσκονται στους σχετικούς χώρους ονομάτων των οικογενειών.

Δημιουργήθηκε από

  • @vaeng (αρχική άσκηση σε C++)
  • @vaiapatta1985 (μεταγραφή σε Ruby)
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Ruby Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τελευταία Διαθήκη;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Ruby με 21 έννοιες121 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.