-6ren">
gpt4 book ai didi

ruby-on-rails - 不理解类、模块和类 << self 方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:31 26 4
gpt4 key购买 nike

我有以下代码:

class MyClass  
module MyModule
class << self

attr_accessor :first_name

def myfunction
MyModule.first_name = "Nathan"
end

end
end
end

当我调用方法时 myfunction像这样,它工作正常:

> me = MyClass::MyModule.myfunction
=> "Nathan"
> me
=> "Nathan"

但是如果我删除了 class << self并添加 self. myfunction 的前缀, 它不起作用。

例如:

class MyClass  
module MyModule

attr_accessor :first_name

def self.myfunction
MyModule.first_name = "Nathan"
end

end
end


> me = MyClass::MyModule.myfunction
NoMethodError: undefined method `first_name=' for MyClass::MyModule:Module

我正在尝试理解 class << self方法。我认为这是一种添加 self. 的方法它里面所有方法的前缀,但如果那是真的,为什么如果我删除它并为每个方法加上前缀它就不起作用 self.手动?

预先感谢您的帮助。

最佳答案

这是因为您的 attr_accessor :first_name也被 class << self 包裹着.

要按照您的建议进行操作,您可以使用 mattr_accessor像这样:

require 'active_support'

class MyClass
module MyModule

mattr_accessor :first_name

def self.myfunction
MyModule.first_name = "Nathan"
end

end
end

关于ruby-on-rails - 不理解类、模块和类 << self 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899386/

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