Ruby 从类方法中引用类a外部的局部变量 班级人员 属性存取器:fn,:mn,:ln def全名 n=fn+“” n=n+“#{mn}”如果mn n

Ruby 从类方法中引用类a外部的局部变量 班级人员 属性存取器:fn,:mn,:ln def全名 n=fn+“” n=n+“#{mn}”如果mn n,ruby,Ruby,变量n超出范围。您需要设置一个实例变量getter并调用它 如果您感到困惑,attr_访问器相当于定义一个getter和setter方法: class Person attr_accessor :fn, :mn, :ln def whole_name n = fn + " " n = n + "#{mn} " if mn n << ln end end dave = Person.new dave.fn

变量n超出范围。您需要设置一个实例变量getter并调用它

如果您感到困惑,attr_访问器相当于定义一个getter和setter方法:

class Person

    attr_accessor :fn, :mn, :ln

    def whole_name
        n = fn + " "
        n = n + "#{mn} " if mn
        n << ln
    end
end


dave = Person.new
dave.fn = "Jim"
puts dave.whole_name

attr_accessor :prop

在这里,@prop是为对象的每个实例分别维护的变量。另一个对象不能直接看到它,但它是通过getter方法公开的。

旁白:正如您所写的那样,
whole\u name
通常被称为实例方法。“类方法”更常用于描述直接针对类调用的方法,如
new
,例如,您可以选择实现
Person。所有姓氏
。Ruby还使用术语“singleton方法”
def prop
  @prop
end

def prop=(value)
  @prop = value
end