2

我试图把框架/语言列表支持运行时创建类。例如在.NET中,您可以使用System.Reflection.Emit库在运行时发出新类。如果你可以提及其他支持这个(或者它的一些变体)的框架/语言,那真的很有用。什么框架/语言支持运行时类的创建?

谢谢:)

回答

2

动态语言如Python,拼音,...

1

根据你的意思,任何语言都可以。

例如,C++可以。乍一看,这是荒谬的 - C++是一种静态类型的编译语言。所以 - 你所做的是在你的项目中加入LLVM库。这是一个编译器后端,您可以使用它来描述您的类,编译它们,并使用LLVM JIT运行它们,所有这些都在运行时为您的应用程序运行。

IIRC,gcc后端是用C编写的,所以如果你愿意弄清楚那些代码,你原则上可以在运行时用一种甚至没有类的语言来定义类。

无论哪种方式,您的工作的一部分是定义一个类是什么 - 这不是内置于编译器后端,因为它们应该支持一系列不同类型的系统的不同前端语言。

当然,我不推荐这种方法 - 只是指出这是可能的。

+0

我的意思是明确的支持,但这很有趣。谢谢:) – Alix 2010-06-26 09:19:27

2

在JavaScript函数中是对象。因此给出一个函数的定义,如:

function Foo(x, y, z) 
{ 
     this.X = x; 
     this.Y = y; 
     this.Z = z; var g = function() 

} 

你可以创建一个新的对象是这样的:

var obj = new Foo(a,b,c); 

但在JavaScript中,你可以在运行时创建函数。

function MakeFoo(x, y, z, f) //where parameter f is a function 
{ 
    var g = function() 
    { 

     this.X = x; 
     this.Y = y; 
     this.Z = z; 
     this.DoSomething = f; 
    } 

    return g; 

} 

var my_class = MakeFoo(a, b, c, function() { /* Do Stuff */ }); 
var obj = new my_class(); 

obj.DoSomething(); 
+0

有趣的,谢谢:) – Alix 2010-06-26 10:18:20