On Mon, 21 Mar 2005 02:59:53 +0900, Ilias Lazaridis <ilias / lazaridis.com> wrote:
> Martin DeMello wrote:
> > Ilias Lazaridis <ilias / lazaridis.com> wrote:
> >
> > # __FILE__ == $0 means that the program is being run directly
> > # rather than 'require'd from another file
> >
> > if __FILE__ == $0
> >   talker = Talker.new
> >   talker.sayHello
> > end
> 
> Assuming I placethe code into the file "talker.rb".
> 
> from the command-line, i like to start it, e.g. with "ruby talker.rb"
> 
> I miss a "main" directive / function / object.

You can think of the whole file as "main". The code will be read from
top to bottom.

> > # one-pass interpreter, and you can reopen classes
> > # so let's just continue
> 
> [sidenote: I don't understand this]

Example:

# first time setting the class
class Talker
  attr_accessor :name
	
  def initialize(name)
    @name = name
  end
	
end

talker = Talker.new('Bob')
puts talker.name

# reopen the class to add sayYourName
class Talker
  def sayYourName
    puts @name
  end
end

talker.sayYourName


The output is:

Bob
Bob


> > class Talker
> >   attr_accessor :name, :age
> 
> can I write?:
> 
> attr_accessor :name
> attr_accessor :age

yes

>  >   def initialize(name, age)
>  >     @name, @age = name, age
>  >   end
> 
> Is this the constructor?
> 
> I assume I can write
> 
>     def initialize(name, age)
>       @name = name
>       @age  = age
>     end

yes

> >   # following the spec, though say_name is more rubyish
> >   def sayYourName
> >     puts @name
> >   end
> 
> can I write?: def sayYourName puts @name end

You need to add semicolons if you want to put more than one line on a line:

def sayYourName; puts @name; end

hth,
Douglas