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 methodlist' 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, 放在私有方法集合前面一次。