Reflection 哪些框架/语言支持运行时类创建?

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运

我试图列出一系列支持运行时类创建的框架/语言。例如,在.NET中,您可以使用
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();

谢谢:)。谢谢你的推荐。我的意思是明确的支持,但这很有趣。谢谢:)