分享 原来 class << self 是这样的

pynix · 2020年09月18日 · 最后由 lithium4010 回复于 2020年10月16日 · 1726 次阅读

ruby 中的 << 符号作用太多。

移位计算 数组 append 还有 open singleton class

我居然一直没懂这个奇奇怪怪的写法。。

要看《Ruby 元编程》,记得是“打开类”一章说到。

https://book.douban.com/subject/7056800/

Rei 回复

主要是没有系统看过。

感觉要找时间回味一下了。

Airbnb Ruby Style 不建議 class << self 這樣玩 就是因為太魔幻了

https://github.com/airbnb/ruby#no-class-self

Aiken00 回复

Rails 建议用class << self https://guides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions

Prefer class << self over self.method for class methods.

piecehealth 回复

感觉 class << self 没有优势反而有劣势,代码长了一眼分辨不出一个方法到底是类方法还是实例方法,相反 self.xxx 就没有这种问题

misakamikoto 回复
class Sample
  class << self 
    # 4空格缩进是类方法
    def class_method
    end

   private
    # 6空格缩进是私有类方法
      def private_class_method
      end
  end

  # 2空格缩进是实例方法
  def instance_method
  end

  private
    # 下区4空格缩进是私有实例方法
    def private_instance_method
    end 
end
piecehealth 回复

代码长了就不能靠缩进区分了

piecehealth 回复

可以约定下 class << self 在类的最后。

class Sample


  # 2空格缩进是实例方法
  def instance_method
  end

  private
    # 下区4空格缩进是私有实例方法
    def private_instance_method
    end 

  class << self 
    # 4空格缩进是类方法
    def class_method
    end

   private
    # 6空格缩进是私有类方法
      def private_class_method
      end
  end
end

这样子

misakamikoto 回复

写那么长的文件不好维护

需要 登录 后方可回复, 如果你还没有账号请 注册新账号