LearnStreet Ruby for Beginners Lesson 9.12

时间:2013-08-04 23:50:40

标签: ruby

您好我坚持定义实例方法。教程问:

在BankAccount类中定义一个名为balance的方法,该方法返回余额。

代码有:

class BankAccount
      def initialize(balance)
          @balance = balance
      end
    # your code here
end

我真的很困惑这个问题是什么。任何帮助将不胜感激......

3 个答案:

答案 0 :(得分:2)

本教程要求您为getter课程定义“BankAccount”:

class BankAccount
      def initialize(balance)
          @balance = balance
      end
      def balance
         @balance  # remember that the result of last sentence gets returned in ruby  
      end
end

然后,你可以做

bankAccount = BankAccount.new 22 # the value 22 is the balance that gets passed to initialize
bankAccount.balance # 22

现在,如果教程要求的是一个类方法(对我而言,它不是很清楚),你应该这样做:

      def self.balance  # self is here so you define the method in the class
         @balance
      end

然后你可以BankAccount.balance

答案 1 :(得分:1)

好的,我们来看一下示例代码:

class BankAccount
      def initialize(balance)
          @balance = balance
      end
    # your code here
end

在这里,您要定义一个BankAccount类,它定义BankAccount#initialize方法(也称为构造函数),通过{{1}创建BankAccount对象时将自动调用该方法}:

BankAccount::new

在上面的示例中,BankAccount.new( 123 ) 将设置为@balance123是一个实例变量(请注意名称前的@balance),这意味着您可以在定义的任何方法中访问 per-object

要返回该变量,请按照练习要求,使用@方法中的关键字return,如下所示:

BankAccount#balance

Ruby语法还允许您省略def balance return @balance end (因为它总是从方法返回最后一个计算的表达式),从而导致更简洁的语法:

return

对于这种 getter-methods (=返回实例变量的方法),有一个简单的实用工具:def balance @balance end ,您可以按如下方式使用:

attr_reader

但别担心,你很快就会了解上述情况。 快乐学习。

答案 2 :(得分:0)

class BankAccount

    attr_reader :balance

    def initialize(balance)
        @balance = balance
    end

end

添加attr_reader:balance