Ruby 对象与类编程全解析
1. 实例变量的直接访问与封装问题
在 Ruby 中, instance_variable_get 和 instance_variable_set 方法可以直接访问和设置对象的实例变量,但这种做法会忽略封装性。例如:
class Frog
def initialize(name)
@name = name
end
def name
@name
end
end
michael = Frog.new("Michael")
michael.instance_variable_get("@name") # => "Michael"
michael.instance_variable_set("@name", 'Bob')
michael.name # => "Bob"
这里从 Frog 类外部调用 instance_variable_get 违反了封装原则。不过,如果在类内部使用,比如在 Module#define_method 调用中使用,是可以接受的。示例如下:
class Frog
define_method(:scientific_name) do
species = 'vulgaris'
speci
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



