【发布时间】:2011-11-19 06:10:16
【问题描述】:
我需要一种编程语言(最好是可编写脚本并具有 JIT 会更好,但这两个不是必需的),这将允许这样的事情(示例):
object
{
id;
new();
destroy();
}
info
{
descr;
}
event inherit object, info
{
trigger; //has id, descr, trigger
}
anon_event inherit event
{
- decr; //removes descr property, therefore anon_event has id, trigger, but NO descr
}
特别好,它还可以:
- 在创建时自动生成 id(new()),
- 允许指定读取哪些属性(成员)为 public、private、const
- 为公共属性自动生成 getter/setter(const 的 getter),
- 为 getter/setter 提供日志记录/回调功能,
- 允许在属性上选择(selectallprop(descr) 将选择所有具有 descr 属性的实例)和在类型上 selectalltype(event) 将选择所有事件和 anon_events,即使成员不同,
- 允许运行时继承、添加/删除属性;
我认为这足以大致了解我正在寻找哪种语言。基本上,它是一个基于或从另一个角度看没有共同祖先的多重继承的组件(作为组件成员的属性列表)。
感谢您的提示
【问题讨论】:
-
你的例子对我来说毫无意义。也许你应该解释你想要什么。
-
anon_event 的实例没有descr 成员(anon_event foo; foo.descr -> "desc" 导致错误,selectallprop(descr) 不会在返回的列表中返回 foo)。
-
另一个例子,这次来自现实。考虑一下人类:一些属性很常见:哺乳动物,呼吸空气,一些属性很常见:两条手臂,两条腿,一个头。以后不必称某人为人类,但以前现在是。无法列举一个人的所有属性。这是不可能的,因为基因型突变导致表型不断变化。因此,一个对象必须是一种人类,但在运行时(进化)期间会失去/获得属性。在漫长的进化过程中,甚至必要的属性也可能会进化。
标签: dynamic programming-languages properties components