相关疑难解决方法(0)

Ruby中'self.method_name'和'class << self'之间的区别

我试图将类的实例化限制为只有一个(不使用单例),但我不能.我尝试使用类变量(@@),但没有运气.我用Google搜索并发现了这个:

class A 
  @count = 0 

  class << self 
    attr_accessor :count 
  end

  def initialize val 
    @a = val 
    self.class.count += 1 
  end 
end 

a=A.new 42 
b=A.new 43
Run Code Online (Sandbox Code Playgroud)

我搜索了"类"自我 "的解释,希望找到一个更好的(或者只是一个更简单和干净),但是反过来,没有运气.最后,经过一些测试后我得出结论,'class << self '只是一个块包装器,你可以在其中定义方法.那么,这是正确的吗?

问候!

ruby ruby-on-rails eigenclass

5
推荐指数
2
解决办法
2441
查看次数

Ruby on Rails 3中的类方法 - 我完全迷失了!

背景在这里.

在上面的链接中,给出了以下示例:

class << self
  def by_author(author)
    where(:author_id => author.id)
  end
end
Run Code Online (Sandbox Code Playgroud)

除了这个语法对像我这样的初学者来说是陌生的 - 我一直认为类方法是用def self.my_class_method - 在哪里可以找到Ruby on Rails中的类方法的文档?

据我所知,类方法总是在类本身(MyClass.my_class_method)上调用,但是如果Rails中的类方法是可链接的,那么似乎必须在其他地方进行其他操作!

编辑:

我想通过对类方法的语法做出评论来欺骗我.我真的在问Rails如何使类方法可链接 - 我理解方法链如何工作,但不知道Rails如何允许链接类方法而不在链中的每个"链接"之后实际返回类对象本身.

ruby ruby-on-rails

5
推荐指数
1
解决办法
5095
查看次数

标签 统计

ruby ×2

ruby-on-rails ×2

eigenclass ×1