将ruby代码包装到类中时出错

将ruby代码包装到类中时出错,ruby,class,Ruby,Class,我是RoR新手。我用ruby创建了一个小应用程序,它有一些小函数来执行代码 e、 g 现在,当我使用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(

我是RoR新手。我用ruby创建了一个小应用程序,它有一些小函数来执行代码

e、 g

现在,当我使用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'”

我想问的是,如何将这些代码添加到一个类中,使其变得更可插拔,并获得所需的结果


提前谢谢

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

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 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学习材料,您可能想看看,其中包括一节介绍Ruby学习材料及其工作原理。至于书籍,这是一本关于Ruby的好书,也是一个关于Rails书籍的问题。我建议在深入研究Rails之前好好掌握Ruby。

在Foo类中定义abc(xyz)之后,您需要结束这一过程method@hagope:结束了,缩进就搞乱了。你也可以把它们作为实例方法,然后在调用类的方法之前实例化它。@Joel Cornett我该怎么做?@Joel Cornett这就是我的意思,不过我重写了它,使它更清晰。@phoffer非常感谢。。。。。我对你很好。但是第一个类为@shahkhan的代码不应该这样。你怎么称呼它?我在示例中添加了代码,以演示如何使用Ruby 1.9.3。
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)