0

嗨,我坚持定义实例方法。教程问:

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

代码有:

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

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

4

3 回答 3

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

于 2013-08-04T23:59:55.833 回答
1

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

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

在这里,您正在定义一个BankAccount类,该类定义将通过以下方式在创建对象BankAccount#initialize 时自动调用的方法(也称为构造函数):BankAccountBankAccount::new

BankAccount.new( 123 )

在上面的例子@balance中将设置为123. @balance是一个实例变量(注意@名称前面的),这意味着您可以在您定义的任何方法中按对象访问它。

要返回该变量,如练习所要求的,您可以returnBankAccount#balance方法中使用关键字,如下所示:

def balance
    return @balance
end

Ruby 语法还允许您省略return(因为它旨在始终从方法返回最后评估的表达式),从而获得更简洁的语法:

def balance
    @balance
end

对于这种getter 方法(= 返回实例变量的方法),有一个简单的实用程序:attr_reader您可以按如下方式使用:

class BankAccount

    attr_reader :balance

    def initialize(balance)
        @balance = balance
    end

end

但别担心,您可能很快就会了解上述内容。快乐学习。

于 2013-08-05T01:49:48.783 回答
0
class BankAccount

    attr_reader :balance

    def initialize(balance)
        @balance = balance
    end

end

添加 attr_reader :balance

于 2013-08-05T05:16:32.503 回答