On 2 Aug 2007, at 15:18, dblack / rubypal.com wrote:

> Hi --
>
> On Thu, 2 Aug 2007, Gabriel Dragffy wrote:
>
>> Hi all
>>
>> I just started with Ruby (yesterday actually). Have been reading  
>> the amazing Poignant Guide, and also a couple of other very basic  
>> tutorials. From one of these I wrote an example class, now my  
>> knowledge of Ruby has expanded a little I tried to rewrite the  
>> class to be even better.  I thought that the method "setme" would  
>> allow the @numberShowing to be changed to any number between 1 and  
>> 6... but obviously not...?
>>
>>
>> #/usr/bin/env ruby
>>
>> class Die
>> def initialize
>>   roll
>> end
>>
>> def roll
>>   @numberShowing = 1 + rand(6)
>> end
>>  def showing
>>   @numberShowing
>> end
>>
>> def setme value
>>      if value === 1..6
>>     @numberShowing = value
>>   else
>>     puts "A dice has only six sides!"
>>   end
>> end
>>
>> end
>
> You've got the === backwards; you want:
>
>   if (1..6) === value
>
> or
>
>   if (1..6).include?(value)
>
> Here's a little rewrite, using a reader attribute to streamline the
> retrieval of the die's number:
>
> class Die
>   attr_reader :number
>
>   def initialize
>     roll
>   end
>
>   def roll
>     self.number = rand(6) + 1
>   end


Have been rereading your example. Just wanted to ask why in the code  
just above did you use  "self.number"  which you changed from @number?


>
>   def number=(value)
>     if (1..6).include?(value)
>       @number = value
>     else
>       puts "A die has only six sides!"
>     end
>   end
> end

and then here "@number" is used.. finding this a little confusing.  
Thanks again, for all your help.


>
> With this, you can do things like:
>
> die = Die.new
> puts die.number
> die.roll
> puts die.number
> die.number = 20    # A die has only six sides!
>
> You could also make the number= method private, to discourage (though
> not entirely prevent, since private doesn't do that) people from
> setting the number manually.
>
>
> David
>
> -- 
> * Books:
>   RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242)
>   RUBY FOR RAILS (http://www.manning.com/black)
> * Ruby/Rails training
>     & consulting:  Ruby Power and Light, LLC (http://www.rubypal.com)
>