首页 > 解决方案 > 如何将大类的私有方法从单个文件中移出

问题描述

我有一个相当大的课程,功能很多,由:

将我的类拆分为多个文件的最佳选择是什么,同时将 3 个公共方法保留在初始文件中,而不是让整个应用程序可以访问私有实现?

标签: ruby-on-railsruby

解决方案


正如评论中所建议的,您可以重新打开该类并只定义私有方法。

或者,您可以定义一个模块并将其包含在您的类中:

module FooPrivate
  private

  def greet
    'hello'
  end
end

class Foo
  include FooPrivate

  def hello
    greet
  end
end

以上在行动:

irb> Foo.new.greet
NoMethodError (private method `greet' called for #<Foo:0x00007f83ba04bd58>)
irb> Foo.new.hello
=> "hello"

推荐阅读