2014-09-21 2 views
0

Какая разница, что параметр «сумма», определяемый равным 0, имеет в общем создании экземпляра в этом контексте, так как код под прокомментированной строкой делает то же самое с «количеством = 0»?Разница между параметрами «сумма» и «сумма = 0», в этом контексте?

class Account 
    attr_accessor :balance 
    def initialize(amount=0) 
     self.balance = amount 
    end 
    def +(x) 
     self.balance += x 
    end 
    def -(x) 
     self.balance -= x 
    end 
    def to_s 
     balance.to_s 
    end 
end 

acc = Account.new(20) 
acc -= 5 
puts acc 

class Account 
    attr_accessor :balance 
    def initialize(amount) 
     self.balance = amount 
    end 
    def +(x) 
     self.balance += x 
    end 
    def -(x) 
     self.balance -= x 
    end 
    def to_s 
     balance.to_s 
    end 
end 

acc = Account.new(20) 
acc -= 5 
puts acc 

Я новичок. Спасибо за любую помощь!

ответ

1

Задание amount = 0 в списке параметров делает необязательным параметр amount (в качестве значения по умолчанию - 0).

Если вы не указали аргумент amount, это будет 0.

account = Account.new # without amount argument 
account.balance # => 0 

account = Account.new 10 # with amount argument 
account.balance # => 10 
+0

О ... я забыл об этом. Да. Спасибо! –

+0

@ C.Graco, Добро пожаловать в переполнение стека! Есть люди, которые пытались ответить на ваш вопрос. Если бы это помогло вам, вы можете рассказать об этом сообществу, приняв ответ [http://meta.stackoverflow.com/a/5235], который был наиболее полезен для вас. – falsetru

0

Единственное отличие состоит в:

Первый класс устанавливает значение по умолчанию

 

    class Account 
     attr_accessor :balance 
     def initialize(amount=0) 
      self.balance = amount 
     end 
     ... class omitted 

    end 

    account = Account.new 
    account.balance # should be equal to 0 

 

     class Account 
     attr_accessor :balance 
     def initialize(amount) 
      self.balance = amount 
     end 
     ... class omitted 

     end 

     account = Account.new nil 
     account.balance # should be equal to nil 

Смежные вопросы