singleton is this easy?

T

Thufir

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=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.toString
i=i+1
end

end


end
C:\code>
C:\code>


thanks,

Thufir
 
P

Peter Szinek

Thufir said:
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
 
7

7stud --

Thufir said:
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.toString
i=i+1
end

end
end
 
L

list. rb

Note: parts of this message were removed by the gateway to make it a legal Usenet post.

Posting code without indentation? wtf?

Thufir said:
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.toString
i=i+1
end

end
end
 
J

Justin Collins

list. rb said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,197
Latest member
ScottChare

Latest Threads

Top