gpt4 book ai didi

ruby - 除了设置类的属性/变量之外,Ruby 中类方法还有哪些其他用途?

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

调用类方法的时候可以修改类吗?或者它只是为了设置属性,就像这个例子。

class UnitedStatesPresident

def self.citizenship

"United States of America"

end

end

p UnitedStatesPresident.citizenship

最佳答案

可以使用类方法修改类。下面是一个定义新类方法的示例,其目的是在定义类后向类(本身)添加一个方法:

class UnitedStatesPresident
def self.citizenship
"United States of America" # Notice the absence of backticks (`)
end

def self.create_method(name, &block)
self.class.send(:define_method, name, &block)
end
end

p UnitedStatesPresident.citizenship # => "United States of America"

UnitedStatesPresident.create_method(:name) do
"Barack Obama"
end

p UnitedStatesPresident.name # => "Barack Obama"

有关详细信息,请参阅文档:http://www.ruby-doc.org/core-2.1.2/Module.html#method-i-define_method

编辑:请注意,文档的作者在上面的示例中使用#send 来发送私有(private)的#define_method 消息。作者不情愿地这样做,将这种风格称为“hack”。

关于ruby - 除了设置类的属性/变量之外,Ruby 中类方法还有哪些其他用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635281/

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