[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

local state variables unique to different objects

Jason

3/18/2009 4:40:00 AM

Is there a way to get local state variables to be unique for different
objects? See my example bank account:

class Acc
@@balance = 100
def withdraw( amount )
if @@balance >= amount
@@balance = @@balance - amount
else
"Insufficient Funds"
end
end
@@balance
end

irb(main):012:0> check1 = Acc.new
=> #<Acc:0xb7dc2f14>
irb(main):013:0> check1.withdraw 50
=> 50
irb(main):014:0> check1.withdraw 40
=> 10
irb(main):015:0> check1.withdraw 25
=> "Insufficient Funds"

This is great - but if I create a new object 'check2' it doesn't start
with a new balance of 100. What am I doing wrong here?

irb(main):016:0> check2 = Acc.new
=> #<Acc:0xb7db08c8>
irb(main):017:0> check2.withdraw 40
=> "Insufficient Funds"
I wanted this to return 60
--
Posted via http://www.ruby-....

2 Answers

Joel VanderWerf

3/18/2009 4:55:00 AM

0

Jason Lillywhite wrote:
> Is there a way to get local state variables to be unique for different
> objects? See my example bank account:
>
> class Acc
> @@balance = 100
> def withdraw( amount )
> if @@balance >= amount
> @@balance = @@balance - amount
> else
> "Insufficient Funds"
> end
> end
> @@balance
> end

@@balance is a _class_ variable, shared by all instances of the class
(and potentially subclasses), you probably want an instance variable:

class Acc
def initialize bal
@balance = bal
end
def withdraw( amount )
if @balance >= amount
@balance = @balance - amount
else
"Insufficient Funds"
end
end
end

acc = Acc.new 100
puts acc.withdraw(12)
puts acc.withdraw(120)

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Jason

3/18/2009 5:12:00 AM

0

ah, thank you.

Interesting how in Lisp (Scheme) you have to do:

(begin (set! balance (- balance amount))
balance)

to decrement the balance and change it's state - using the set!
--
Posted via http://www.ruby-....