el fin de pedir algo como:¿Métodos booleanos en Ruby?
MyClass::create().empty?
¿Cómo podría configurar empty
dentro MiClase?
Vacío (verdadero/falso) depende de si una variable de clase @arr
está vacía o no.
el fin de pedir algo como:¿Métodos booleanos en Ruby?
MyClass::create().empty?
¿Cómo podría configurar empty
dentro MiClase?
Vacío (verdadero/falso) depende de si una variable de clase @arr
está vacía o no.
El signo de interrogación es en realidad parte del nombre del método, por lo que podría hacer esto:
class MyClass
def empty?
@arr.empty? # Implicitly returned.
end
end
Exactamente lo mismo que he mostrado en el último mensaje, pero con un nombre de método diferente.
En primer lugar, create
debe devolver algo con un método empty?
. Por ejemplo:
class MyClass
def self.create
[]
end
end
Si quieres estar operando en los casos de MyClass
según su última pregunta:
class MyClass
def self.create
MyClass.new
end
def initialize
@arr = []
end
def empty?
@arr.empty?
end
def add x
@arr << x
self
end
end
Aquí MyClass
actúa como un simple envoltorio sobre una matriz, proporcionando un método add
.
pry(main)> MyClass.create.empty?
=> true
Es posible que también deba comprobar si @arr es nulo o no. Esto depende de la definición de su clase de vacío.
def empty?
[email protected] || @arr.empty?
end
Usted podría utilizar Forwardable
delegar empty?
de su clase para la matriz:
require "forwardable"
class MyClass
extend Forwardable
def_delegators :@arr, :empty?
def initialize(arr)
@arr = arr
end
end
my_object = MyClass.new([])
my_object.empty? # => true
¿Quiere decir * variable de clase * '@@ arr' o variable de instancia * *' @ arr'? – maerics
En Ruby, hay 'initialize' que es llamado por' MyClass.new'. – Reactormonk
"En Ruby, hay initialize que es llamado por MyClass.new". Convenido. Y es bueno seguir eso en Ruby; Quédate con la carretera de ladrillos amarillos cuando tengas puestas las zapatillas Ruby. –