l'equivalente di private static in Ruby

|

Se volete contare tutti gli oggetti creati con una certa classe avete bisogno di un campo private static; in Ruby questo non esiste, ma una via molto elegante per farlo è questa:
[code]
class Counter
def initialize
@count = 0
end
def next
value = @count
@count += 1
return value
end
end

module Countable
def self.included(mod)
mod.instance_eval do
@counter = Counter.new
end

class << mod;
attr_reader :counter
end
end
end

class Counted
include Countable
def initialize
@count = self.class.counter.next
end
end

p Counted.new
p Counted.new
p Counted.new
[/code]

Ringrazio il canale #ruby-lang su irc.freenode.net per questa dritta

Rispondi

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Linee e paragrafi vanno a capo automaticamente.
Maggiori informazioni sulle opzioni di formattazione.