问题标签 [metaprogramming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
11521 浏览

vb.net - Visual Basic 中类的动态属性

我是 vb.net 新手,所以请多多包涵。是否可以在 Visual Basic 中为类创建属性(或属性)(我使用的是 Visual Basic 2005)?所有关于元编程的网络搜索都让我无处可去。这是一个例子来澄清我的意思。

那么是否可以定义函数 addProp ?

谢谢!阿米特

0 投票
2 回答
6124 浏览

grails - o.errors.allErrors.each { println it } 保存域对象失败时默认

当使用 Grails/GORM 持久化域对象时,我经常发现自己想知道为什么 save() 调用会失败。

这可以通过添加逻辑轻松解决:

但是,在我执行 .save() 的任何地方添加它都会添加很多重复的代码。本着 DRY 的精神,我想将 Grails/GORM 配置为自动将任何保存错误打印到控制台(stderr)。那可能吗?如果没有,我如何扩展 GORM 以使其成为可能?

0 投票
1 回答
404 浏览

groovy - Groovy 元编程中的“this”

fileAsString在以下为类添加方法的Groovy 代码中String,有人可以解释一下“this”到底指的是什么。我认为它fileAsString是调用方法的对象,但显然这实际上是委托所指的。

谢谢,唐

0 投票
4 回答
2744 浏览

function - 如何从 Clojure 中的字符串定义函数?

我想这样做(在 REPL 或任何地方)

然后能够做到

或者,如果有任何其他方法可以从宏中的自定义字符串创建 defn,您能否将我推向正确的方向?

0 投票
3 回答
1940 浏览

python - 如何区分函数和类方法?

如果变量引用函数或类方法,我如何找出它是哪一个并获取类类型,以防它是类方法,特别是当类仍如给定示例中那样声明时。

例如。

在大卫和 JF 塞巴斯蒂安的前两个回复之后更新问题 为了再次强调 JF 塞巴斯蒂安提到的一点,我希望能够在类中声明函数时区分它(当我得到的类型是函数时)而不是绑定或未绑定的方法)。IE。第一次调用get_info(__init__)发生的地方我希望能够检测到它的方法被声明为类的一部分。

出现了这个问题,因为我在它周围放置了一个装饰器,它获得了init函数的句柄,我实际上无法确定一个方法是在类中声明还是作为独立函数声明

0 投票
1 回答
6934 浏览

python - python装饰器和方法

新来的。我也是(非常)python 的新手,并试图理解以下行为。有人可以向我解释为什么这个例子中的两种方法有不同的输出吗?

这是我系统上的输出:

那么为什么装饰调用永远不会下降到孙节点呢?我显然错过了一些关于语法的东西......

0 投票
9 回答
14683 浏览

c++ - 以字符数组为参数的模板元编程

我在 GCC 4.3.2 的 C++11 的半实现中使用 TMP,我想知道是否有办法以某种方式执行以下操作:

它显然不会让我那样做,而且我认为在编译时使用用户定义的文字来转换“asdf”字符串会很幸运,但是 GCC 4.3 不支持用户定义的文字...

有什么建议么?我宁愿不做'a','s','d','f',因为这严重阻碍了我对这个项目的计划。

0 投票
1 回答
558 浏览

metaprogramming - Purdue Compiler Construction Tool Set (PCCTS):网站、教程、书籍?

我是一名大学生,并被要求熟悉 PCCTS,Purdu 编译器构建工具集。我已获得http://www.polhode.com/pccts.html的链接

我必须在 PCCTS 中编写一些基本程序,然后在编译器优化中使用这些知识。

因此,谷歌上有一些结果可用于此目的,但需要一些时间才能找到所有有用的结果。如果有人知道更多关于这个主题的教程、书籍、网站或一些基本指导,那对我来说真的很有帮助。

0 投票
2 回答
159 浏览

programming-languages - 元循环评估器的条件

一种语言是否必须满足任何条件才能为该语言编写元循环评估器?我可以为 BASIC 或 Python 写一个吗?

0 投票
2 回答
301 浏览

python - Python 中 compile() 的可逆版本

我正在尝试在 Python 中创建一个与 compile() 等效的函数,但也可以让我取回原始字符串。为了消除歧义,我们将这两个函数称为 comp() 和 decomp()。那是,

返回的字符串不必相同("2*(3+x)" 可以接受),但它必须基本相同("2 * x + 6" 不会)。

这是我尝试过的不起作用的方法:

  • 在 compile 返回的代码对象上设置一个属性。您不能在代码对象上设置自定义属性。
  • 子类化代码,以便我可以添加属性。代码不能被子类化。
  • 设置 WeakKeyDictionary 将代码对象映射到原始字符串。代码对象不能被弱引用。

这是有效的方法,但有问题:

  • 将文件名的原始代码字符串传递给 compile()。但是,我失去了在其中实际保留文件名的能力,我也想这样做。
  • 保留将代码对象映射到字符串的真实字典。这会泄漏内存,尽管由于编译很少见,但对于我当前的用例来说是可以接受的。如果必须的话,我可能可以定期通过 gc.get_referrers 运行密钥并杀死死掉的密钥。