per chiedere qualcosa di simile:Metodi booleani in Ruby?
MyClass::create().empty?
Come faccio a configurare empty
all'interno MyClass?
vuoto (vero/falso) dipende dal fatto che una variabile di classe @arr
sia vuota o meno.
per chiedere qualcosa di simile:Metodi booleani in Ruby?
MyClass::create().empty?
Come faccio a configurare empty
all'interno MyClass?
vuoto (vero/falso) dipende dal fatto che una variabile di classe @arr
sia vuota o meno.
Il punto interrogativo è in realtà una parte del nome del metodo, quindi si dovrebbe fare questo:
class MyClass
def empty?
@arr.empty? # Implicitly returned.
end
end
Esattamente come ho mostrato nel post precedente, ma con un diverso nome del metodo.
In primo luogo, create
deve restituire qualcosa con un metodo empty?
. Per esempio:
class MyClass
def self.create
[]
end
end
Se vuoi essere operativo sulle istanze di MyClass
secondo la vostra ultima domanda:
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
Qui MyClass
agisce come un semplice wrapper per una matrice, fornendo un metodo add
.
pry(main)> MyClass.create.empty?
=> true
Potrebbe anche essere necessario verificare se @arr è nullo o no. Questo dipende dalla definizione della classe di vuoto.
def empty?
[email protected] || @arr.empty?
end
Si potrebbe utilizzare Forwardable
per delegare empty?
dalla classe alla matrice:
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
Vuoi dire * classe variabile * '@@ arr' o * variabile di istanza *' @ arr'? – maerics
In Ruby, c'è 'initialize' che è chiamato da' MyClass.new'. – Reactormonk
"In Ruby, viene inizializzata la chiamata a MyClass.new". Concordato. Ed è bene seguirlo in Ruby; Segui la strada di mattoni gialli quando hai le tue pantofole di rubino. –