【问题标题】:Where should I call a Ruby class method?我应该在哪里调用 Ruby 类方法?
【发布时间】:2016-10-04 23:53:00
【问题描述】:

我有一个 Ruby 方法:

class ClassOfSomeSort
  def self.methodOfSomeSort(argument)
  ...
  end

  methodOfSomeSort(5)

end

我听说在类本身中调用方法是一种不好的做法。

我应该在哪里调用它?在 C++ 中有一个 int main 函数在哪里完成,但在 Ruby 中它在哪里完成?

【问题讨论】:

  • 你可以在"top level" 上写你的代码(这将是主要的)可以这么说。或者你可以看看this SO question
  • 我看不出它为什么不好。
  • 请注意,在 Ruby 中,方法名称应类似于 method_of_some_sort,避免大写字母并使用下划线。课程就像你在那里的一样。
  • 你被否决了,很可能是因为人们认为你没有付出足够的努力。我建议阅读“How to Ask”和“How much research effort is expected of Stack Overflow users?”。我还建议阅读一些教程。

标签: ruby


【解决方案1】:

您可以在任何时间和任何上下文中调用类方法:

class Example
  def self.demo!
    puts "Hello, world!"
  end
end

Example.demo!

这与实例方法不同,您需要创建某事物的实例。如果您没有实例方法,也没有任何用处,请以大致相同的方式定义 module

【讨论】:

    【解决方案2】:
    class Example
     def self.methodOfMine(argument)
     ...
     end
    end
    
    object = Example.methodOfMine(InsertAnything)
    

    通过创建实例调用类外的方法:)

    【讨论】:

      【解决方案3】:

      Ruby 是一种解释型语言,所以简单的程序可能如下所示:

      print "Hello, World!"
      

      仅此而已。您可以从命令行调用ruby fileName.rb 运行此程序。在您的示例中,您可以在类声明之后调用它:

      class ClassX
        def self.MethodOfMine(argument)
          # method
        end
      end
      
      ClassX.MethodOfMine(5)
      

      【讨论】:

      • Class 是一个核心对象类。同样创建此类的实例,然后在其上调用方法意味着这些是实例方法,但它们不是。