下面是workflow gem中的一个方法定义。
def spec
# check the singleton class first
class << self
return workflow_spec if workflow_spec
end
c = self.class
# using a simple loop instead of class_inheritable_accessor to avoid
# dependency on Rails' ActiveSupport
until c.workflow_spec || !(c.include? Workflow)
c = c.superclass
end
c.workflow_spec
end是
class << self
return workflow_spec if workflow_spec
end相当于(一类方法):
class << self
def workflow_spec
return workflow_spec if workflow_spec
end
end?如果workflow_spec是一个类方法,那么在method中定义它的目的是什么?workflow_spec是指self.spec.workflow_spec吗?或者只是self.workflow_spec。
发布于 2016-04-06 05:29:14
在上面的例子中没有定义任何东西。有一个对类方法workflow_spec的调用,如果它返回truthy,则对它进行后续调用。
此外,在你贴出的剪贴画里的评论中描述了这种行为。
密码
class << self
return workflow_spec if workflow_spec
end几乎相当于:
return self.class.workflow_spec if self.class.workflow_specworkflow中的代码与上面的代码之间的区别是,workflow gem调用的是一个特征类,而不是一个公共类。
与此完全相同的是:
eigenclass = class << self; self; end
return eigenclass.workflow_spec if eigenclass.workflow_spec或(贷记@Jordan):
return singleton_class.workflow_spec if singleton_class.workflow_spechttps://stackoverflow.com/questions/36442207
复制相似问题