Reflection 哪些框架/语言支持运行时类创建?
我试图列出一系列支持运行时类创建的框架/语言。例如,在.NET中,您可以使用Reflection 哪些框架/语言支持运行时类创建?,reflection,reflection.emit,dynamic-class,dynamic-class-creation,Reflection,Reflection.emit,Dynamic Class,Dynamic Class Creation,我试图列出一系列支持运行时类创建的框架/语言。例如,在.NET中,您可以使用System.Reflection.Emit库在运行时发出新类。如果您可以提到其他支持此功能的框架/语言(或其变体),那将非常有用 谢谢:)像Python、Ruby等动态语言,Objective-C支持它()根据您的意思,任何语言都可以 例如,C++可以。乍一看,这是荒谬的——C++是一种静态类型编译语言。因此,您要做的是在项目中包含LLVM库。这是一个编译器后端,您可以使用它来描述类,编译它们,并使用LLVM JIT运
System.Reflection.Emit
库在运行时发出新类。如果您可以提到其他支持此功能的框架/语言(或其变体),那将非常有用
谢谢:)像Python、Ruby等动态语言,Objective-C支持它()根据您的意思,任何语言都可以 例如,C++可以。乍一看,这是荒谬的——C++是一种静态类型编译语言。因此,您要做的是在项目中包含LLVM库。这是一个编译器后端,您可以使用它来描述类,编译它们,并使用LLVM JIT运行它们,所有这些都是在应用程序的运行时进行的 IIRC,gcc后端是用C编写的,因此,如果您愿意理解代码,原则上可以在运行时使用一种甚至没有类的语言定义类 不管是哪种方式,您的工作的一部分就是定义类的确切含义——它不是内置在编译器后端中的,因为它们应该支持一系列具有不同类型系统的不同前端语言
当然,我并不推荐这种方法——只是指出这是可能的。在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();
谢谢:)。谢谢你的推荐。我的意思是明确的支持,但这很有趣。谢谢:)