是否可以从字符串(方法名称)和块(方法的内容)在 ruby 中定义实例方法?
我想这将需要使用 instance_eval(),但我还没有弄清楚如何混合这两种数据类型。字符串和块都是动态确定的,因此可以在开头使用“def #{string}”创建块 - 我不知道该怎么做。
我的用例是一个代表 Bacula 配置文件的类。配置文件可以有许多不同类型的资源。它们都存储在幕后相对复杂的数据结构中(由于其他原因,简化此结构不会完成我正在寻找的东西)。我希望通过命名方法快速访问资源。
例如,A 代表一个配置文件,B 代表另一个。A 有资源 Director、Client、Job,B 有 Messages 和 Director。
在这种情况下,A 应该有方法director()、client() 和job(),而B 有messages() 和director()。这些中的每一个都会从对象的相应配置文件中返回相关资源。
我知道有更简单的方法可以做到这一点(比如实现 [] 方法),但在这一点上,出于好奇,我正在寻求更难的解决方案。