小编mei*_*zin的帖子

将attribute_accessor添加到Ruby中的单个实例

我有以下代码将实例变量添加到单个实例:

class MyClass
  def initialize(x)
    @var = x
  end
end

obj = MyClass.new(4)
obj.instance_variable_set(:@a, 5)
Run Code Online (Sandbox Code Playgroud)

是否可以动态添加attr_accessor属性,以便可以使用obj.aobj.a = ...或必须使用instance_variable_getinstance_variable_set获取并设置它?

ruby

4
推荐指数
1
解决办法
85
查看次数

类体可执行的意义是什么?

类主体可执行,如下代码所示:

3.times do
  class C
    puts "hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

那有什么意义?我没有看到类体可执行的重要性.是因为我们需要顶层的代码来执行,还是能够返回一个值?如果这不是唯一的原因,是否有一个很好的例子来表明这是一个好主意?

ruby

4
推荐指数
1
解决办法
120
查看次数

在 Ruby 中调用类中的实例方法

我对此感到非常困惑。在Programming Ruby book中,它说,“接收器检查自己的类中的方法定义”

所以类对象存储所有实例方法。那为什么我不能从一个类中调用实例方法呢?

例如

Class ExampleClass
  def example_method    
  end
  example_method
end
Run Code Online (Sandbox Code Playgroud)

我无法在 ExampleClass 中调用 example_method。

但是,如果我像这样在顶级定义一个方法:

class ExampleClass
  def example_method
  end
end

def example_method1
end

example_method1
Run Code Online (Sandbox Code Playgroud)

然后我可以调用顶级方法example_method1。

顶级不也是一门课吗?为什么它与 ExampleClass 中的调用实例方法不同?

ruby

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

标签 统计

ruby ×3