Kurzusok
/
Ruby
Ruby
/
Feladatok
/
Végrendelet
Végrendelet

Végrendelet

Tanulófeladat

Bevezetés

Névterek

A kódszervezés fontos módja a névterek használata. Az osztályok és a modulok névtereket biztosítanak. Két metódus neve ütközhet, amit úgy oldhatsz fel, hogy különböző névterekbe teszed őket. A névterek egymásba ágyazhatók, ami segíthet a nagy kódbázisok strukturálásában. A névtereket a scope-resolution operátorral (::) éred el.

Az alábbi példa két különböző foo metódus használatát mutatja be. Úgy használhatók együtt, hogy a nevük elé írod a megfelelő névteret.

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

Figyeld meg, hogy a névterek értelmezése attól függ, hol van az éppen végrehajtott kód. Ha a root névtérben lévő valamire akarsz hivatkozni (azaz minden definiált névteren kívülre), kezdd a :: jellel.

Például:

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

Utasítások

Egy rangos ügyvédi irodánál dolgozol, amely arra szakosodott, hogy egyedi végrendeleti kérésekkel foglalkozzon.

Ebben a feladatban egy titokzatos széfet fogsz kinyitni. Te vagy a végrendeleti végrehajtó, és három család régóta őrzött titkos kódjait fogod összeállítani, hogy megkapd a bankszámlaszámot és a hozzá tartozó kódot.

Hogy egyetlen család se nyithassa ki egyedül a széfet, csak úgy lehet kinyitni, ha a tudásukat összekapcsolják egy titkos módosítóval, amelyet te a végrendeletből ismersz.

Három részfeladat vár rád, és mindegyik abban segít, hogy a családok kinyithassák a széfet.

1. Foglalj helyet a családok előtt, és terítsd ki a papírjaidat

Definiálj egy EstateExecutor nevű névteret. A következő részfeladatok kódját az EstateExecutor névtér testében kell definiálni.

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

2. Találd meg a titkos bankszámlaszámot

Most jön a nagy pillanat. Csak nálad van a titkos módosító kulcs, amellyel felfedheted a titkos bankszámlaszámot.

Definiáld az assemble_account_number(secret_modifier) metódust, amely argumentumként veszi a Integer típusú titkos módosítót, és visszaadja az összeállított bankszámlaszámot Integer értékként.

Ahhoz, hogy megkapd a helyes számot, össze kell adnod mindhárom család bank_number_part értékét.

3. Utolsó lépés: Írd be a titkos kódot

A végrendelet utasításai szerint először az összes kék, majd az összes piros töredéket kell összeadnod. A kapott kód a két összeg szorzata.

Definiáld az assemble_code metódust, amely a három család töredékeit egyetlen Integer eredménnyé összekapcsolva adja vissza a kapott kódot. A metódusnak nincsenek argumentumai, és kizárólag a családok megfelelő névtereiben lévő információkra támaszkodik.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ruby Exercism

Készen állsz elkezdeni a(z) Végrendelet feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ruby nyelvet 21 fogalom121 feladat segítségével, valódi emberi mentorálással, mindez ingyen.