0

我正在创建一个新的面向对象系统,我需要访问宏父级的变量。我有以下内容:

macro module {
    rule { $i:ident { $e ... } } => {
        var $i = {
            $e ...
        }
    }
}

macro fn {
    rule { $i:ident { $e ... } } => {
        $e ...
    }
}

module x {
    fn name { 

    }
}

我希望能够在 中fn macro拥有可用的module名称,在这种情况下x,因为也许我想做类似的事情$parentModule.prototype.myFunc。但如果我这样做$e$e,它就不能正常工作。可能吗?

4

1 回答 1

1

有几种方法可以做到这一点,但我认为最简单的方法是使用命名模式

macro module {
    rule { 
        $i:ident {
            $mbody:(fn $name:ident { $body ...}) ...
        }
    } => {
        $i.prototype.$mbody$name ...
    }
}

module x {
    fn name { 

    }
}
于 2014-08-19T19:27:36.183 回答