Dynamic 使用这些标准的编程语言

Dynamic 使用这些标准的编程语言,dynamic,programming-languages,properties,components,Dynamic,Programming Languages,Properties,Components,我需要一种编程语言(最好是可编写脚本的,有JIT会更好,但这两种语言不是必需的),这将允许类似这样的内容(示例): 特别好的是,它还可以: 创建时自动生成id(new()) 允许指定哪些属性(成员)为公共、私有、常量 自动生成公共属性的getter/setter(const的getter) 为getter/setter提供日志记录/回调功能 允许在属性上选择(selectallprop(descr)将选择具有descr属性的所有实例),在类型上,selectalltype(event)将选择所

我需要一种编程语言(最好是可编写脚本的,有JIT会更好,但这两种语言不是必需的),这将允许类似这样的内容(示例):

特别好的是,它还可以:

  • 创建时自动生成id(new())
  • 允许指定哪些属性(成员)为公共、私有、常量
  • 自动生成公共属性的getter/setter(const的getter)
  • 为getter/setter提供日志记录/回调功能
  • 允许在属性上选择(selectallprop(descr)将选择具有descr属性的所有实例),在类型上,selectalltype(event)将选择所有事件和anon_事件,即使成员不相同
  • 允许运行时继承、添加/删除属性
我认为这足以让我大致了解我在寻找哪种语言。基本上,它是一个组件(作为组件成员的属性列表),基于或从另一个角度看,没有共同祖先的多重继承


感谢您的提示

您所要求的将(1)违反Liskov替换原则,这是面向对象编程的一个重要原则,并且(2)几乎不可能在实践中使用,因为从类中删除任意成员通常会导致非编译或非功能性代码,因为同一类中的其他成员在很大程度上依赖于这些删除的成员


所以我想说的是:这整件事都是个坏主意。

你的例子对我来说毫无意义。也许你应该解释一下你想要什么。anon_事件的实例没有descr成员(anon_事件foo;foo.descr->“desc”会导致错误,selectallprop(descr)不会在返回的列表中返回foo)。另一个例子,这次来自现实。考虑人类:有些属性是常见的:哺乳动物,呼吸空气,一些属性是常见的:两个胳膊,两条腿,一个头。后来的人没有必要称某人为人,但现在的人是以前的人。一个人不能列举一个人的所有属性。这是不可能的,因为基因型突变导致不断变化的非诺型。因此,对象必须是人的类型,但在运行时(进化)会失去/获得属性。在漫长的进化过程中,甚至必要的属性也可能进化。谢谢你的回答。在我看来,我的对象并不(不应该)代表一个特定的类/类型的对象,而是一个组件(属性持有者),为了方便起见,它应该是可继承的。我不希望它的行为像在真正的OOP中那样受到限制。我认为,VM可以跟踪组件的所有属性和类型,例如,在无效访问时生成异常。因此,selectallprop有助于限制此类情况。只有当对象具有此类属性、函数或是某个类的类型时,才会访问该对象。
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  
}