Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中Person类有问题_Ruby_Class - Fatal编程技术网

Ruby中Person类有问题

Ruby中Person类有问题,ruby,class,Ruby,Class,我想我的思路是对的,但是当我试着叫p.first_的名字时。我在截图中看到了一个错误,有人知道我做错了什么吗 如果你看不到,这里有一个链接: 代码如下: class Person def initialize (first_name, last_name, age) @first_name = first_name @last_name = last_name @age = age end end 我进去的

我想我的思路是对的,但是当我试着叫p.first_的名字时。我在截图中看到了一个错误,有人知道我做错了什么吗

如果你看不到,这里有一个链接:

代码如下:

class Person 

    def initialize (first_name, last_name, age)  
        @first_name = first_name  
        @last_name = last_name
        @age = age  

    end  
end
我进去的时候一切都很好

> p = Person.new("Earl", "Rubens-Watts", 2)
但从那以后就很奇怪了。期望输出为:

 > p = Person.new("Earl", "Rubens-Watts", 2)
  > p.first_name
  => "Earl"
  > p.last_name
  => "Rubens-Watts"
  > p.age
  => 2

谢谢

您尚未定义
first\u name
方法或声明任何属性。试试这个:

class Person 
    attr_reader :first_name, :last_name, :age
    def initialize (first_name, last_name, age)  
        @first_name = first_name  
        @last_name = last_name
        @age = age
    end
end

您尚未定义
first\u name
方法或声明任何属性。试试这个:

class Person 
    attr_reader :first_name, :last_name, :age
    def initialize (first_name, last_name, age)  
        @first_name = first_name  
        @last_name = last_name
        @age = age
    end
end

使用
new
调用构造函数时,值作为实例变量正确存储在
p
对象中。但是,如果不编写相关的方法来读取它们,则无法从对象范围外访问它们,这是OOP中常见的
getter
方法

为此:

class Person

    attr_reader: :first_name, :last_name, :age

    def initialize (first_name, last_name, age)
        @first_name = first_name
        @last_name = last_name
        @age = age
    end

end

如果您还需要从外部修改它们的值,请改用
attr\u accessor
,它会自动提供
getter
setter
方法。

使用
new
调用构造函数时,值会作为实例变量正确存储在
p
对象中。但是,如果不编写相关的方法来读取它们,则无法从对象范围外访问它们,这是OOP中常见的
getter
方法

为此:

class Person

    attr_reader: :first_name, :last_name, :age

    def initialize (first_name, last_name, age)
        @first_name = first_name
        @last_name = last_name
        @age = age
    end

end

如果您还需要从外部修改它们的值,请改用
attr\u accessor
,它自动提供
getter
setter
方法。

请使用文本而不是图像来显示文本信息。在ruby中,实例变量不能在类外直接访问。ruby甜美的语法糖让它看起来像是请使用文本而不是图像来显示文本信息。在ruby中,实例变量不能在类外直接访问。ruby的甜合成糖让它看起来像那样