gpt4 book ai didi

ruby - ruby 的反射?

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

我很好奇这是如何工作的。例如,如果我创建一个基于工厂模式的类,您可以在其中“注册”类供以后使用,然后执行类似

FactoryClass.register('YourClassName', [param, param, ...]);
FactoryClass.create('your_class_name').call_method_from_this_object

其中 'class_name' 是映射到值的散列中的键:ClassName

有没有类似php reflection的东西,我可以在哪里创建基于字符串名称的类的实例并传入参数? (在 php 中,参数将是它们的数组,php 然后知道如何处理)

所以如果我们举一个现实世界的例子:

class Foo
attr_reader :something

def initialize(input)
@something = input
end

def get_something
return @something
end
end

# In the factory class, foo is then placed in a hash: {'foo' => 'Foo'}
# This step might not be required??
FactoryClass.create('Foo', ['hello'])

# Some where in your code:
FactoryClass.create('foo').get_something # => hello

这可以用 ruby​​ 实现吗?我知道一切本质上都是一个对象,但我还没有看到任何关于从这样的字符串名称创建类实例以及传入对象的 API 或文档。

至于上面的哈希,现在想想我可能不得不做这样的事情:

{'foo' => {'class' => 'Foo', 'params' => [param, param, ...]}}

这样,当您在 FactoryClass 上调用 .create 时,它会知道,好的,我可以使用关联的参数实例化 Foo

如果我离题太远,请随时指导我。

最佳答案

查看 Module#const_get (从字符串中检索常量)和 Object#send (从字符串调用方法)。

关于ruby - ruby 的反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30192968/

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