gpt4 book ai didi

ruby - "class<
转载 作者:数据小太阳 更新时间:2023-10-29 07:55:01 24 4
gpt4 key购买 nike

创建类方法(没有明显的“def self.method”)的两种主要技术是:

  1. 在“class << self” block 中定义它们
  2. 定义 ClassMethod 模块并稍后对其进行扩展

我个人更喜欢第二种方式,看起来更干净。有没有人有任何理由更喜欢一种技术而不是另一种?

还有“class_method”方法,但我从未使用过它,它的实现相当复杂,而且似乎比前两个做的更多。

最佳答案

self.method当您只需要创建一个没有依赖关系或相关逻辑的方法时,这是最简单的选择。

class << self允许您做的远不止是在元类上定义方法。这在您定义需要与元类的其他部分一起使用的方法时很有用(例如,为现有方法名称设置别名)。

例如:

class Logger
class << self
attr_reader :payload

def log(message)
@payload = message
end
end
end

模块扩展方法对于方法重用和对多个相关方法进行分组非常有用。

例如:

module QueryMethods
def find
end

def where
end
end

module FactoryMethods
def build
end

def create
end
end

class BusinessModel
extend QueryMethods
extend FactoryMethods
end

关于ruby - "class<<self"与 "extend ClassMethods",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43304895/

24 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com