【发布时间】:2015-04-25 12:44:56
【问题描述】:
我正在尝试生成一个动态类
dynamic_name = 'Person'
Object.const_set(dynamic_name, Class.new {def init(attrs); end})
我想为这个类生成属性。我试着这样做:
Person.class.module_eval { attr_accessor :name}
但是是否可以直接将其放入init 方法中?我还需要为属性设置约束,例如上面的属性名称应该是size > 0,并且允许包含正则表达式/^[A-Z]/的字符
【问题讨论】:
-
你为什么要这样做?你想达到什么目标?
-
我必须使用动态名称动态创建类,并且属性具有动态名称和类型!这不是实现的方法吗?
-
什么是
size?name是什么? -
不管
size和name,你的最后一段代码都是无效的。 -
这不是代码,只是对约束的解释
标签: ruby metaprogramming