0

我是一个 RoR 新手。我在 ruby​​ 中创建了一个小应用程序,它具有执行代码的小功能。

例如

 def abc(xyz)
    some code
 end

 def ghi(xyz)
    some code
 end

 def jkl(output)
    some code
 end

 xyz = abc[ARGV(0)]
 output = ghi(xyz)
 puts jkl(output)

现在,当我使用 ruby​​ .rb 在命令提示符下运行此代码时,它可以很好地执行并返回所需的结果。但是当我尝试创建一个类并将整个代码添加到它时,例如

 class Foo
     def abc(xyz)
    some code
 end

 def ghi(xyz)
    some code
 end

 def jkl(output)
    some code
 end

 xyz = abc[ARGV(0)]
 output = ghi(xyz)
 puts jkl(output)
 end

它会生成类似 “Foo:Class (NoMethodError) 的未定义方法'abc'”的错误

我想问的是,我应该如何将此代码添加到一个类中,以便它变得更加可插入并获得所需的结果。

提前致谢。

4

1 回答 1

2

正如本文所写,这些都是实例方法。您需要像这两个示例一样使它们成为类方法,或者您可以将它们保持原样并创建该类的实例。无论哪种方式,您都应该将最后三个语句移到类定义之外。

class Foo
  class << self
    def abc(xyz)
      some code
    end

    def ghi(xyz)
      some code
    end

    def jkl(output)
      some code
    end
  end
end
xyz = Foo.abc('something')
output = Foo.ghi(xyz)
puts Foo.jkl(output)

或者....

class Foo
  def self.abc(xyz)
    some code
  end

  def self.ghi(xyz)
    some code
  end

  def self.jkl(output)
    some code
  end
end
xyz = Foo.abc('something')
output = Foo.ghi(xyz)
puts Foo.jkl(output)

编辑:要在评论中回答您的问题,这就是您将如何实例化类并使用实例方法调用。

class Foo
  def abc(xyz)
    some code
  end

  def ghi(xyz)
    some code
  end

  def jkl(output)
    some code
  end
end
bar = Foo.new
xyz = bar.abc('something')
output = bar.ghi(xyz)
puts bar.jkl(output)

如果您还没有任何 Ruby 学习材料,您可能想查看Chris Pine 的教程,其中包括关于及其工作方式的部分。至于书籍,一般来说是一本很棒的 Ruby书籍,这里是关于 Rails 书籍的问题。我建议在深入了解 Rails 之前先掌握 Ruby。

于 2012-05-25T06:05:04.083 回答