问题标签 [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 投票
1 回答
487 浏览

ruby - 如何在 Ruby 中动态确定方法名

在 Ruby 中,有没有办法确定方法的名称,类似于“类”方法如何返回对象的类型?

例如:

0 投票
5 回答
5423 浏览

perl - 发现 Perl 应用程序当前定义的所有变量的最佳方法是什么?

我正在寻找最好、最简单的方法来做类似的事情:

0 投票
4 回答
2121 浏览

javascript - 以编程方式获取本地变量的值以在 javascript 中运行?

鉴于:

我正在寻找插入注释时会产生 bar 值的代码。举例来说,这样的事情在全球范围内有效:

但是,当然,全局定义的变量会附加到窗口对象。函数的局部变量不是。是否有一些类似的方法可以以编程方式获取局部函数变量?

0 投票
6 回答
50828 浏览

ruby - 如何使用 define_method 创建类方法?

如果您尝试以元编程方式创建类方法,这很有用:

我要遵循的答案...

0 投票
2 回答
872 浏览

haskell - 如何轻松查看 Template Haskell 语句的输出?

我的模块中有以下模板 Haskell 代码,它是更大应用程序的一部分。

我怀疑生成的 Foldable 实例并不完全是我最初的想法,但我找不到验证这一点的方法。那么,最好只使用ghci,是否可以查看生成的实例?

我尝试了以下并得到一个语法错误,我猜这是因为我做错了™。

0 投票
3 回答
1246 浏览

c++ - 编译时常量索引是编译时常量数组本身的编译时常量吗?

我正在尝试玩让 C++ 编译器在编译时合成常量字符串的哈希值的花哨游戏。这将让我用单个标识符替换字符串,从而大大节省代码大小和复杂性。

为了编程的清晰性和易用性,如果我可以在编译时使用简单的内联字符串(如“Hello”)检查和计算,那将是非常棒的,这些字符串是指向编译时常量字符的编译时常量指针。

如果我可以在编译时索引这些,我可以制作一个模板元程序来做我想做的事。但尚不清楚 C++ 标准是否将 ct-constant 数组的 ct-constant 索引本身视为 ct-constant。

换个方式问,

是非常有效的 C++(和 C)。但是va 的值是编译时间常数吗?

我已经相信答案是否定的,但实际上一些编译器在没有任何警告的情况下接受它,更不用说错误了。例如,下面的编译和运行甚至没有来自英特尔的 C++ 编译器的一个警告:

然而,微软的编译器根本不会编译,给出一个合理连贯的错误信息,关于使用带有内部链接的对象的模板。

我怀疑我的问题的答案是“不,即使对具有常量索引的常量数组的任何数组引用在编译时也是常量”。这是否意味着英特尔编译器的成功执行是英特尔编译器中的一个错误?

0 投票
3 回答
632 浏览

serialization - 我需要一个 D 的序列化框架

我正在寻找一个D 模板库来获取任意变量并将其编组为可传输的包。变量可能是基本值类型 ( int, char[], real) 或者可能是一个structclass甚至可能包含或是一个引用类型。一个可以在没有任何类型帮助的情况下做到这一点的系统会很好,但我怀疑它的要求太多了,所以我会对使用轻量级注释的东西感到满意。

如果没有类似的关于如何构建的建议,那就太好了。我可以想到几种方法来进行消毒,但我不确定如何指定注释。

背景:在尝试使用 ASMX 和 WCF Web 服务并且不喜欢它们之后,我感觉我想尝试解决 RPC 问题。

编辑:顺便说一句,只要它是可移植的,我不太关心中间的格式是什么(XML、JASON、YAML、二进制)。

0 投票
1 回答
3282 浏览

groovy - Groovy 扩展元类

我开发了一个类,它有一些增强整数的方法,它主要让我这样做:

现在我必须扩展 Integer.metaClass 做这样的事情:

我试着把它放在文件的底部,在 Money 类声明之前,但是编译器说一个名为 Money 的类已经存在,我知道它为什么会发生(因为 groovy 创建了一个带有空静态文件名的类void main 运行此代码)。

我还尝试在类中使用静态块,如下所示:

这都不起作用。

第三种解决方案是更改文件名(如 MoneyClass.groovy)并保留类名(类 Money),但这似乎有点奇怪。

还有什么我可以做的吗?谢谢。

0 投票
6 回答
18355 浏览

ruby - Ruby 元编程在线教程

我刚刚开始学习 Ruby,并且对基础知识有了很好的了解。我一直听说 Ruby 做得很好的一件很酷的事情是元编程,但我读过的教程都没有涵盖这一点。搜索谷歌我似乎只能找到付费的 ruby​​ 元编程屏幕投射。

那么,我在哪里可以找到一个好的 Ruby 元编程在线教程呢?

0 投票
9 回答
7364 浏览

ruby - 是否有类似于 Class#inherited 的钩子仅在 Ruby 类定义之后触发?

#inheritedclass Foo在语句之后立即调用。我想要只在end关闭类声明的语句之后运行的东西。

这里有一些代码来举例说明我需要什么:

有这样的东西存在吗?可以创建吗?我完全不走运吗?