相关疑难解决方法(0)

动态创建类方法

我正在编写一个类方法来创建另一个类方法.似乎是围绕着如何一些陌生感class_evalinstance_eval类方法的范围内进行操作.为了显示:

class Test1
  def self.add_foo
    self.class_eval do # does what it says on the tin
      define_method :foo do
        puts "bar"
      end
    end
  end
end

Test1.add_foo # creates new instance method, like I'd expect
Test1.new.foo # => "bar"


class Test2
  def self.add_foo
    self.instance_eval do # seems to do the same as "class_eval"
      define_method :foo do
        puts "bar"
      end
    end
  end
end

Test2.add_foo # what is happening here?!
Test2.foo # => NoMethodError
Test2.new.foo # => "bar"


class Test3 …
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming

3
推荐指数
1
解决办法
856
查看次数

这行Ruby代码在做什么?

可能重复:
Ruby中的类<< self idiom

我想知道这段代码在做什么.我并不低估这一行.我知道是什么attr_accessor.

class User
  class << self; attr_accessor :base_uri end
  ....
....
...
Run Code Online (Sandbox Code Playgroud)

ruby

0
推荐指数
1
解决办法
141
查看次数

标签 统计

ruby ×2

metaprogramming ×1