Singleton is this easy?

Is this all that’s required to ensure that there’s ever only one
instance of an ArrayOfCreatures? Seems too easy!

C:\code>
C:\code>
C:\code>type Driver.rb
require ‘ArrayOfCreatures’

require ‘Dragon’

someCreatures=ArrayOfCreatures.instance

puts “\nquantity of creatures:”
numOfCreatures = gets.chomp.to_i

0.upto(numOfCreatures) do |i|
someCreatures[i]=Dragon.new
end

someCreatures.toString
C:\code>
C:\code>
C:\code>type ArrayOfCreatures.rb
require ‘singleton’

class ArrayOfCreatures < Array

include Singleton

def toString

    print "\n\n\nArrayOfCreatures\n"
    print "================\n\n"

    i=0
    while i < self.length
            print "\n\n"
            print i
            print ":\n"
            print self[i].toString
            i=i+1
    end

end

end
C:\code>
C:\code>

thanks,

Thufir

On Nov 9, 10:55 am, Thufir [email protected] wrote:

Is this all that’s required to ensure that there’s ever only one
instance of an ArrayOfCreatures?
yes.

Thufir wrote:

Is this all that’s required to ensure that there’s ever only one
instance of an ArrayOfCreatures? Seems too easy!

You can also use the standard Ruby singleton implementation:

=============================================================
require ‘singleton’

class SavageCrystalDragon
include Singleton
end

scd = SavageCrystalDragon.instance

If you would try to scd.dup:

can’t dup instance of singleton SavageCrystalDragon (TypeError)

HTH,
Peter


http://www.rubyrailways.com
http://scrubyt.org

Thufir wrote:

Is this all that’s required to ensure that there’s ever only one
instance of an ArrayOfCreatures? Seems too easy!

Implementing a singleton class by hand is easy too, so you aren’t
getting much savings using the Singleton module–you save yourself from
having to write 4 extra lines of code.

If I have a method with 200 lines of code in it, and I put the method in
its own module Calculations, I can perform the complicated calculation
by writing:

require ‘calculations’
result = my_meth(10, 20, 3.5)

That’s pretty easy too, isn’t it?

On a side note: when you ask questions, you want to make it as easy as
possible for people to answer your questions, right? Posting code
without indentation is bad form because it makes your code harder to
read. Some people won’t even bother with your questions if you can’t be
bothered with posting indented code. In Ruby, the recommended style is
to use 2 spaces for indenting. Your code would look look something like
this:

require ‘singleton’

class ArrayOfCreatures < Array
include Singleton

def toString
print “\n\n\nArrayOfCreatures\n”
print “================\n\n”

i=0
while i < self.length
  print "\n\n"
  print i
  print ":\n"
  print self[i].toString
  i=i+1
end

end
end

Posting code without indentation? wtf?

On Nov 9, 2007 2:51 PM, 7stud – [email protected] wrote:

On a side note: when you ask questions, you want to make it as easy as
possible for people to answer your questions, right? Posting code
without indentation is bad form because it makes your code harder to
read. Some people won’t even bother with your questions if you can’t be
bothered with posting indented code. In Ruby, the recommended style is
to use 2 spaces for indenting. Your code would look look something like
this:

list. rb wrote:

Posting code without indentation? wtf?

Yeah, I see the indentation on both the mailing list and the forums in
the OP and the replies, so I don’t understand where this is coming from.

-Justin