I worked a lot in tcl, and this is my first day of trying something in
Ruby. Second, maybe.
class Thread
def initialize number @number = number ; # @replies = 0 ;
end ; # initialize
def filename
dirname = “./data/” ; # the directory where the files are kept
filename = dirname + @number.toS + “-” + @replies.toS + “.html”
return filename
end ; # filename
end ; # Thread definition
puts “Finished definitions.”
thread[1727] = Thread.new 1727
puts "The filename would be: "
puts thread[1727].filename
Of course, that doesn’t work. It is unhappy with the code to create
the filename, since .toS is not a method for fixnum (which apparently
is what @number is, but I never TOLD it that was a fixnum).
And I can’t seem to define “thread” to be an array of class Thread
objects. I want to refer to thread[1702] and thread[291] and hop
around like that.
(And, perhaps a more advanced question, right now I am making the
thread number part of the object, ultimately for a gorgeous bit of
code it seems like the object should just know the index of the array
instead, so if I ask thread[32] what it’s filename is it would know
that it is thread #32. Can it do that?)
Thanks. I know it’s a basic question. It’s been a decade since I
learned a new language. I gotta get out more.
dirname = “./data/” ; # the directory where the files are kept
puts "The filename would be: "
puts thread[1727].filename
Of course, that doesn’t work. It is unhappy with the code to create
the filename, since .toS is not a method for fixnum (which apparently
is what @number is, but I never TOLD it that was a fixnum).
See: http://whytheluckystiff.net/ruby/pickaxe/html/tut_stdtypes.html
The method you probably search for is to_s…
And I can’t seem to define “thread” to be an array of class Thread
objects. I want to refer to thread[1702] and thread[291] and hop
around like that.
class Thread already exists and is, as its name foreshadows, for http://whytheluckystiff.net/ruby/pickaxe/html/tut_threads.html
(And, perhaps a more advanced question, right now I am making the
thread number part of the object, ultimately for a gorgeous bit of
code it seems like the object should just know the index of the array
instead, so if I ask thread[32] what it’s filename is it would know
that it is thread #32. Can it do that?)
class FileThread
DIR = ‘data’.freeze # defines class constant
@@instances = Array.new # initializes class variable as array
def self.new number # overwrites class method
@@instances[number] ||= super # set array elem with result from
parent class if not already set
end
def self.[] number # defines new class method
new number # class class method new
end
Ah, many thanks. Now it works. I should have thought about Thread
being a predefined class. I thought it highlighted like that because
it was a constant (what with the capital T I gave it).
Underbars are hard to keep in my head, I think in interCaps.
And the code Florian posted for the object to know it’s index in an
array… I think that’s probably too difficult for me at this point.
I’m still bumping around the first project I figured I could use Ruby
on.
Pickaxe is on my list for today’s trip to the bookstore, and I’ll poke
around in the first edition a little more. Chris P.'s guide is
awesome, I just wish he’d write part 2 through 10.
–Colin
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.