gpt4 book ai didi

ruby - 如何通过mixin定义实例变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:55 25 4
gpt4 key购买 nike

我正在写这样一个程序:

module Filter
def self.included?(klass)
@count = 0
end
end

class Object
include Filter
end

class Person
def get_count
puts @count
end
end

我想通过mixing Filter定义一个实例变量@count,希望这个mixin可以被所有的Object访问。

但是,我的方法不行。

谁能告诉我如何实现这一点?

最佳答案

不要使用变量,使用属性:

module Counter
attr_accessor :count
end

class Person
include Counter
end

person = Person.new
person.count = 50
puts person.count

此外,不要将内容包含到Object 中,只包含在您的类中。用非通用方法污染主命名空间是不好的,可能会导致其他类中的方法名称冲突,从而导致难以发现的错误。

只在您认为需要的地方包含模块,而不是在所有地方。

关于ruby - 如何通过mixin定义实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com