加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby中命名空间函数的最佳做法(新手问题)

发布时间:2020-12-16 21:34:15 所属栏目:百科 来源:网络整理
导读:(StackOverflow告诉我这个问题是“主观的,很可能被关闭”…好吧,我会给它一个镜头,不管) 我正在编写一堆帮助方法(对于TextMate包),我想(我需要)让它们整齐地命名空间. 这些方法实际上只是功能,即它们不在任何范围之外的任何操作,因此并不属于一个类.没有什么
(StackOverflow告诉我这个问题是“主观的,很可能被关闭”…好吧,我会给它一个镜头,不管)

我正在编写一堆帮助方法(对于TextMate包),我想(我需要)让它们整齐地命名空间.

这些方法实际上只是功能,即它们不在任何范围之外的任何操作,因此并不属于一个类.没有什么需要实例化.

到目前为止,我一直在做这件事,工作很好

module Helpers::Foo
    module_function
    def bar
        # ...
    end
end
Helpers::Foo.bar # this is how I'd like to call the method/function

但是最好是:
1.跳过module_function并声明方法/函数为self.*?
或者更好的是声明一个类而不是一个模块?
或者使用类<<自我(在一个模块或一个类内)?
还是别的什么?

我知道这是一个很开放的问题,但我真的只是想听听人们在做什么.

解决方法

我也喜欢
module Foo
  def self.bar
    "bar"
  end
end

Foo.bar #=> "bar"

要么

module Foo
  def Foo.bar
    "bar"
  end
end

Foo.bar #=> "bar"

但可能倾向于前者,我认为自我.真的是描述性的.

编辑:阅读评论后,我提出了第三个选项,我更喜欢可读性.从技术上讲,我认为这将被定义为扩展Eigen类中包含的方法.

module Foo
  module ClassMethods
    def baz
      "baz"
    end
  end
  extend ClassMethods
end

Foo.baz #=> "baz"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读