Un método importante para organizar el código es el uso de espacios de nombres.
Las clases y los módulos proporcionan espacios de nombres.
Dos métodos podrían tener una colisión de nombres, que se puede resolver colocándolos en espacios de nombres distintos.
Los espacios de nombres se pueden anidar, lo que puede ayudar a estructurar bases de código grandes.
Se accede a los espacios de nombres mediante el operador de resolución de ámbito ::.
El ejemplo de abajo muestra el uso de dos métodos foo distintos.
Se usan juntos al anteponer sus respectivos espacios de nombres.
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
Ten en cuenta que los espacios de nombres se interpretan según dónde esté el código que se ejecuta.
Para referirte a algo en el espacio de nombres raíz (es decir, fuera de todos los espacios de nombres definidos), empieza con ::.
Por ejemplo:
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
Trabajas para un prestigioso bufete de abogados especializado en gestionar solicitudes de testamentos poco comunes.
En este ejercicio, vas a abrir una bóveda misteriosa. Eres el albacea de la herencia y deberás reunir los códigos secretos que tres familias han guardado durante mucho tiempo para obtener un número de cuenta y el código correspondiente.
Para evitar que alguna familia abra la bóveda por su cuenta, esta solo se puede abrir combinando sus conocimientos con un modificador secreto que conoces por el testamento.
Tienes tres tareas, todas relacionadas con ayudar a las familias a abrir la bóveda.
Define un espacio de nombres llamado EstateExecutor.
El código de las siguientes tareas debe definirse en el cuerpo del espacio de nombres EstateExecutor.
class SomeName
# The space between the class/module name
# and the `end` keyword
# is called body of the namespace.
end
Este es tu gran momento. Solo tú tienes la clave del modificador secreto para revelar el número de cuenta secreto.
Define el método assemble_account_number(secret_modifier), que recibe el modificador secreto de tipo Integer como argumento y devuelve como Integer el número de cuenta ensamblado.
Para obtener el número correcto, debes sumar la bank_number_part de cada una de las tres familias.
Las instrucciones del testamento te piden sumar primero todos los fragmentos azules y luego todos los rojos. El código resultante se obtiene multiplicando ambas sumas.
Define el método assemble_code, que devuelve el código resultante combinando los fragmentos de las tres familias en un único resultado de tipo Integer.
El método no tiene argumentos y se apoya únicamente en la información de los espacios de nombres correspondientes de las familias.
Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.