class 的未定义方法/class 之外的调用方法
Undefined method for class / calling methods outside of a class
class Computer_create
public
def initialize(filename)
@@files = []
@filename = filename
end
public
def create(filename)
@@files << filename
puts "File: #{filename} has been created"
end
public
def list
return @@files
end
end
file_1 = Computer_create.new("FileTest")
file_1.create("FileTest")
Computer_create.list
我只是想制作一种简单的数据库,它可以制作文件,并将它们存储在一个数组中,尽管正在努力将它们存储在一个散列中。
但每次我尝试我的代码时,它都会给我这个:
"computer_create.rb:24:in <top (required)>': undefined method
list' for Computer_create:Class (NoMethodError)"
我想做的是:通过 file_1
创建一个名为 FileTest
的文件
然后列出 @@files
中的所有文件
但它似乎不起作用。
错误信息完全正确; class 没有 list
方法。
在您已经创建的 Computer_create
的 实例 上调用 list
,例如,
file_1.list
换句话说,就是你如何调用 other 实例方法 file_1.create
.
您还在以一种...不寻常的方式使用 @@
。据我所知,这些变量是 instance 变量,只需要一个 @
.
无关,但在每个 public 方法之前放置 public
是嘈杂且不必要的。事实上,我会说只把 private
, 放在私有方法集合前面一次。
class Computer_create
public
def initialize(filename)
@@files = []
@filename = filename
end
public
def create(filename)
@@files << filename
puts "File: #{filename} has been created"
end
public
def list
return @@files
end
end
file_1 = Computer_create.new("FileTest")
file_1.create("FileTest")
Computer_create.list
我只是想制作一种简单的数据库,它可以制作文件,并将它们存储在一个数组中,尽管正在努力将它们存储在一个散列中。 但每次我尝试我的代码时,它都会给我这个:
"computer_create.rb:24:in <top (required)>': undefined method
list' for Computer_create:Class (NoMethodError)"
我想做的是:通过 file_1
创建一个名为 FileTest
的文件
然后列出 @@files
中的所有文件
但它似乎不起作用。
错误信息完全正确; class 没有 list
方法。
在您已经创建的 Computer_create
的 实例 上调用 list
,例如,
file_1.list
换句话说,就是你如何调用 other 实例方法 file_1.create
.
您还在以一种...不寻常的方式使用 @@
。据我所知,这些变量是 instance 变量,只需要一个 @
.
无关,但在每个 public 方法之前放置 public
是嘈杂且不必要的。事实上,我会说只把 private
, 放在私有方法集合前面一次。