Troubles having arrays of objects inside a class

# My goal for the following function is to make an array of objects, and then # make a new object that containts this list of objects. And to be able to # see that it works a function that goes trough each element of objects. # Does not work :frowning: Any ideas ?

  # I have a an hash with objects and a class with these objects loaded_plugins = {} loaded_plugins[0] = Class.new loaded_plugins[1] = Class.new loaded_plugins[2] = Class.new

class Scan    @plugins

   def initialize(block) { @plugins = block }

   def rubyfunc      each_item do |item|        puts "Rubyforum"      end    end    def each_item(&block) { block.call(@plugins) } end

  # And I send this array(loaded_plugins) to a class:

scan = Scan.new(loaded_plugins) scan.rubyfunc

=> "Rubyforum" (Once, not three times)

# My goal for the following function is to make an array of objects,
and then # make a new object that containts this list of objects. And to be
able to # see that it works a function that goes trough each element of
objects. # Does not work :frowning: Any ideas ?

# I have a an hash with objects and a class with these objects loaded_plugins = {} loaded_plugins[0] = Class.new loaded_plugins[1] = Class.new loaded_plugins[2] = Class.new

class Scan   @plugins

  def initialize(block) { @plugins = block }

  def rubyfunc     each_item do |item|       puts "Rubyforum"     end   end   def each_item(&block) { block.call(@plugins) } end

# And I send this array(loaded_plugins) to a class:

scan = Scan.new(loaded_plugins) scan.rubyfunc

=> "Rubyforum" (Once, not three times)

That's not surprising - you're only calling the block once (and your
passing in the hash). You probably want each_item to read @plugins.each {|plugin| block.call(plugin)}

Fred

Frederick Cheung wrote:

  def initialize(block) { @plugins = block }

  def rubyfunc     each_item do |item|       puts "Rubyforum"     end   end   def each_item(&block) { block.call(@plugins) } end

# And I send this array(loaded_plugins) to a class:

scan = Scan.new(loaded_plugins) scan.rubyfunc

=> "Rubyforum" (Once, not three times)

That's not surprising - you're only calling the block once (and your passing in the hash). You probably want each_item to read @plugins.each {|plugin| block.call(plugin)}

Fred

Great, good point!

What if I want to access that certain objects functions ? (i.e. not having a hash, but converting it back to a real class) => Changing the inside function from above:

...

def rubyfunc   each_item do |item|        item.get_another_function(self) <- Wouldn't work     end end