我有以下代码将实例变量添加到单个实例:
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.a和obj.a = ...或必须使用instance_variable_get和instance_variable_set获取并设置它?
类主体可执行,如下代码所示:
3.times do
class C
puts "hello"
end
end
Run Code Online (Sandbox Code Playgroud)
那有什么意义?我没有看到类体可执行的重要性.是因为我们需要顶层的代码来执行,还是能够返回一个值?如果这不是唯一的原因,是否有一个很好的例子来表明这是一个好主意?
我对此感到非常困惑。在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