Tracks
/
Ruby
Ruby
/
Übungen
/
Testament
Testament

Testament

Lernübung

Einführung

Namensräume

Eine wichtige Methode, um Code zu organisieren, ist die Verwendung von Namensräumen. Klassen und Module stellen Namensräume bereit. Zwei Methoden können einen Namenskonflikt haben, den du auflöst, indem du sie in verschiedene Namensräume packst. Namensräume lassen sich verschachteln, was helfen kann, große Codebasen zu strukturieren. Der Zugriff auf die Namensräume erfolgt über den Operator :: zur Auflösung des Gültigkeitsbereichs.

Das folgende Beispiel zeigt die Verwendung von zwei verschiedenen foo-Methoden. Sie werden zusammen verwendet, indem du jeweils ihren Namensraum voranstellst.

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

Beachte, dass Namensräume davon abhängen, wo sich der ausgeführte Code befindet. Um auf etwas im Wurzelnamensraum zu verweisen (also außerhalb aller definierten Namensräume), beginne mit ::.

Zum Beispiel:

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

Anleitung

Du arbeitest für eine renommierte Anwaltskanzlei, die sich auf außergewöhnliche Testamentsanfragen spezialisiert hat.

In dieser Übung öffnest du einen geheimnisvollen Tresor. Du bist der Testamentsvollstrecker und setzt die lange gehüteten Geheimcodes von drei Familien zusammen, um eine Kontonummer und den passenden Code zu erhalten.

Damit keine Familie den Tresor allein öffnen kann, lässt er sich nur öffnen, indem man ihr Wissen mit einem geheimen Modifikator kombiniert, den du aus dem letzten Willen kennst.

Du hast drei Aufgaben, die alle dazu dienen, den Familien beim Öffnen des Tresors zu helfen.

1. Nimm Platz vor den Familien und breite deine Unterlagen aus

Definiere einen Namespace namens EstateExecutor. Der Code aus den nächsten Aufgaben sollte im Body des Namespace EstateExecutor definiert werden.

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

2. Finde die geheime Kontonummer

Das ist dein großer Moment. Nur du hast den geheimen Modifikatorschlüssel, um die geheime Kontonummer zu enthüllen.

Definiere die Methode assemble_account_number(secret_modifier), die den geheimen Modifikator vom Typ Integer als Argument entgegennimmt und die zusammengesetzte Kontonummer als Integer zurückgibt.

Um die richtige Nummer zu erhalten, musst du die bank_number_part von jeder der drei Familien aufsummieren.

3. Letzter Schritt: Gib den geheimen Code ein

Die Anweisungen im Testament verlangen, dass du zuerst alle blauen und dann alle roten Fragmente addierst. Den resultierenden Code erhältst du, indem du beide Summen multiplizierst.

Definiere die Methode assemble_code, die den resultierenden Code zurückgibt, indem sie die Fragmente der drei Familien zu einem einzigen Integer-Ergebnis kombiniert. Die Methode hat keine Argumente und stützt sich allein auf die Informationen in den relevanten Namespaces der Familien.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Ruby Exercism

Bereit, mit Testament zu starten?

Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.