相关疑难解决方法(0)

836
推荐指数
4
解决办法
14万
查看次数

Rails类<< self

我想了解class << self下一个例子中的含义.

module Utility
  class Options #:nodoc:
    class << self
      def parse(args)          
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby class

34
推荐指数
2
解决办法
1万
查看次数

有人可以解释一下<< self to to?

我第一次跳进rails编程,在查看我下载的一些库的代码时,我偶尔会注意到代码:

class << self
  def func
     stuff
  end
end
Run Code Online (Sandbox Code Playgroud)

我已经尝试在网上搜索一下解释,但是<< ???从最有用的搜索引擎中删除了,所以它最终只是搜索类自我,这不是很有用.任何见解将不胜感激.

ruby ruby-on-rails

9
推荐指数
1
解决办法
652
查看次数

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
查看次数

在rails控制器中使用静态变量是否是一种好习惯?

我有一个关于Rails最佳实践的问题。在我的rails项目中,我有以下代码:

class MyController < ApplicationController

  def some_method
    @product = MyFabricatorClass.new.create_product
  end

  ...
end
Run Code Online (Sandbox Code Playgroud)

MyFabricatorClass不依赖于某些状态,并且其行为是恒定的。我也在做很多C ++的工作,对我来说,总是实例化一个新的MyFabricatorClass对象似乎有点效率低下。在C ++项目中,我会适当地使用类似以下内容的东西:

class MyController < ApplicationController

  @@my_fabricator = nil

  def some_method
    @@my_fabricator ||= MyFabricatorClass.new
    @product = @@my_fabricator.create_product
  end

  ...
end
Run Code Online (Sandbox Code Playgroud)

这种样式在Rails中也合法吗?典型的Rails方式是什么?

感谢您的任何建议...!

ruby-on-rails static-variables

2
推荐指数
1
解决办法
1087
查看次数