Ruby中Person类有问题
我想我的思路是对的,但是当我试着叫p.first_的名字时。我在截图中看到了一个错误,有人知道我做错了什么吗 如果你看不到,这里有一个链接: 代码如下: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 我进去的
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的甜合成糖让它看起来像那样