Ruby类方法
我是一个开始学习Ruby的新手。我已经创建了这段代码,但是它返回它一直返回Ruby类方法,ruby,methods,Ruby,Methods,我是一个开始学习Ruby的新手。我已经创建了这段代码,但是它返回它一直返回NoMethodError,未定义的方法new。我做错了什么 class Pessoa attr_accessor :nome, :idade, :altura @@lista = [] def self.lista @@lista end def initialize(nome, idade, altura) pessoa = self.new pessoa.nome =
NoMethodError,未定义的方法new
。我做错了什么
class Pessoa
attr_accessor :nome, :idade, :altura
@@lista = []
def self.lista
@@lista
end
def initialize(nome, idade, altura)
pessoa = self.new
pessoa.nome = nome
pessoa.idade = idade
pessoa.altura = altura
@@lista << self
end
end
pessoa1 = Pessoa.new("Joao",13,2)
pessoa2 = Pessoa.new("Alfredo",15,1)
puts Pessoa.lista.inspect
类
属性访问器:nome,:idade,:altura
@@lista=[]
def self.lista
@@利斯塔
结束
def初始化(nome、idade、altura)
pessoa=self.new
pessoa.nome=nome
pessoa.idade=idade
pessoa.altura=altura
@@lista那pessoa=self.new
是你的问题<对已创建的对象调用代码>初始化
以设置其初始状态,因此
self
没有new
方法(因为它不是类)pessoa
,没有任何意义,因为它将在方法完成后消失def initialize(nome, idade, altura)
@nome = nome
@idade = idade
@altura = altura
@@lista << self
end
def初始化(nome、idade、altura)
@nome=nome
@idade=idade
@阿尔图拉
@@在执行Pessoa#initialize
self
期间,lista保存类Pessoa
的实例。因此,您试图在类Pessoa
的实例上调用new
。
这是不可能的,因为new
是类class
的一个实例方法:在最后一行中,您在Pessoa
类上正确调用了它,但不能在实例上调用它(例如pessoa1
或pessoa2
或Pessoa\initialize
方法中的self
),因为它们都不是类,因此不定义新的
方法
正确的代码是:
class Pessoa
attr_accessor :nome, :idade, :altura
@@lista = []
def self.lista
@@lista
end
def initialize(nome, idade, altura)
@nome = nome
@idade = idade
@altura = altura
@@lista << self
end
end
pessoa1 = Pessoa.new("Joao",13,2)
pessoa2 = Pessoa.new("Alfredo",15,1)
puts Pessoa.lista.inspect
类
属性访问器:nome,:idade,:altura
@@lista=[]
def self.lista
@@利斯塔
结束
def初始化(nome、idade、altura)
@nome=nome
@idade=idade
@阿尔图拉
@@利斯塔