问题标签 [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.
vb.net - Visual Basic 中类的动态属性
我是 vb.net 新手,所以请多多包涵。是否可以在 Visual Basic 中为类创建属性(或属性)(我使用的是 Visual Basic 2005)?所有关于元编程的网络搜索都让我无处可去。这是一个例子来澄清我的意思。
那么是否可以定义函数 addProp ?
谢谢!阿米特
grails - o.errors.allErrors.each { println it } 保存域对象失败时默认
当使用 Grails/GORM 持久化域对象时,我经常发现自己想知道为什么 save() 调用会失败。
这可以通过添加逻辑轻松解决:
但是,在我执行 .save() 的任何地方添加它都会添加很多重复的代码。本着 DRY 的精神,我想将 Grails/GORM 配置为自动将任何保存错误打印到控制台(stderr)。那可能吗?如果没有,我如何扩展 GORM 以使其成为可能?
groovy - Groovy 元编程中的“this”
fileAsString
在以下为类添加方法的Groovy 代码中String
,有人可以解释一下“this”到底指的是什么。我认为它fileAsString
是调用方法的对象,但显然这实际上是委托所指的。
谢谢,唐
function - 如何从 Clojure 中的字符串定义函数?
我想这样做(在 REPL 或任何地方)
然后能够做到
或者,如果有任何其他方法可以从宏中的自定义字符串创建 defn,您能否将我推向正确的方向?
python - 如何区分函数和类方法?
如果变量引用函数或类方法,我如何找出它是哪一个并获取类类型,以防它是类方法,特别是当类仍如给定示例中那样声明时。
例如。
在大卫和 JF 塞巴斯蒂安的前两个回复之后更新问题
为了再次强调 JF 塞巴斯蒂安提到的一点,我希望能够在类中声明函数时区分它(当我得到的类型是函数时)而不是绑定或未绑定的方法)。IE。第一次调用get_info(__init__)
发生的地方我希望能够检测到它的方法被声明为类的一部分。
出现了这个问题,因为我在它周围放置了一个装饰器,它获得了init函数的句柄,我实际上无法确定一个方法是在类中声明还是作为独立函数声明
python - python装饰器和方法
新来的。我也是(非常)python 的新手,并试图理解以下行为。有人可以向我解释为什么这个例子中的两种方法有不同的输出吗?
这是我系统上的输出:
那么为什么装饰调用永远不会下降到孙节点呢?我显然错过了一些关于语法的东西......
c++ - 以字符数组为参数的模板元编程
我在 GCC 4.3.2 的 C++11 的半实现中使用 TMP,我想知道是否有办法以某种方式执行以下操作:
它显然不会让我那样做,而且我认为在编译时使用用户定义的文字来转换“asdf”字符串会很幸运,但是 GCC 4.3 不支持用户定义的文字...
有什么建议么?我宁愿不做'a','s','d','f',因为这严重阻碍了我对这个项目的计划。
metaprogramming - Purdue Compiler Construction Tool Set (PCCTS):网站、教程、书籍?
我是一名大学生,并被要求熟悉 PCCTS,Purdu 编译器构建工具集。我已获得http://www.polhode.com/pccts.html的链接
我必须在 PCCTS 中编写一些基本程序,然后在编译器优化中使用这些知识。
因此,谷歌上有一些结果可用于此目的,但需要一些时间才能找到所有有用的结果。如果有人知道更多关于这个主题的教程、书籍、网站或一些基本指导,那对我来说真的很有帮助。
programming-languages - 元循环评估器的条件
一种语言是否必须满足任何条件才能为该语言编写元循环评估器?我可以为 BASIC 或 Python 写一个吗?
python - Python 中 compile() 的可逆版本
我正在尝试在 Python 中创建一个与 compile() 等效的函数,但也可以让我取回原始字符串。为了消除歧义,我们将这两个函数称为 comp() 和 decomp()。那是,
返回的字符串不必相同("2*(3+x)" 可以接受),但它必须基本相同("2 * x + 6" 不会)。
这是我尝试过的不起作用的方法:
- 在 compile 返回的代码对象上设置一个属性。您不能在代码对象上设置自定义属性。
- 子类化代码,以便我可以添加属性。代码不能被子类化。
- 设置 WeakKeyDictionary 将代码对象映射到原始字符串。代码对象不能被弱引用。
这是有效的方法,但有问题:
- 将文件名的原始代码字符串传递给 compile()。但是,我失去了在其中实际保留文件名的能力,我也想这样做。
- 保留将代码对象映射到字符串的真实字典。这会泄漏内存,尽管由于编译很少见,但对于我当前的用例来说是可以接受的。如果必须的话,我可能可以定期通过 gc.get_referrers 运行密钥并杀死死掉的密钥。