问题标签 [dynamic-function]

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 投票
2 回答
158 浏览

javascript - 如何在 javascript 中评估完整的函数字符串(包括参数)

我有一个选择(下拉列表),其中包含与操作相对应的选项。每个动作对应一个通用的 javascript 函数,该函数应该在 select 的更改事件上调用。所以它看起来像这样:

我的服务器代码动态生成每个选项的值字符串(这是对 javascript 函数的调用,具体取决于操作的作用和显示方式),服务器还动态生成参数(视图的 url)。

我在选择的更改事件上有一个 jquery 侦听器,我想在选项的值字符串中调用 javascript 函数。

似乎每个人都讨厌 eval() 。. . 但这是一个合适的案例,还是我应该做其他事情?我看了这个如何将字符串转换为 javascript 函数调用?. . . 但是在那一个中​​,您只有要处理的名称,而不是完整的函数调用字符串,包括参数。

我这样做的原因是因为我正在为我们应用程序的某些类型的视图创建一个通用框架,并且每个页面的操作可能不同(并且具有不同的 url 和/或调用不同的 javascript 函数) .

谢谢!

0 投票
2 回答
522 浏览

google-chrome-extension - Chrome 扩展:内容脚本 -> 动态函数

我想在内容脚本(Chrome 扩展)上调用动态函数。但是常见的方法不起作用:

request.action 是废话。函数 blah() 是一个......现在它来了......一个函数!

抛出的错误:

有人克服了这个?我真的不喜欢为我需要的每一个动作进行切换。

0 投票
3 回答
10276 浏览

perl - 如何使用散列在 Perl 中创建回调函数(调度表)?

我想调用一个动态调度其他函数的主控制器函数,如下所示:

一个警告是 subs 是在其他模块中定义的,所以回调必须能够引用它们......另外,我很难得到正确的哈希值!

0 投票
2 回答
2995 浏览

perl - 如何动态调用对象的方法?

在 Perl 中,我知道你可以动态地使用eval*{$func_name}调用函数,但是你如何使用对象的方法来做到这一点呢?

例如

所以如果我说类似的话

它会调用

0 投票
3 回答
4681 浏览

javascript - Javascript:将局部变量传递给动态创建的函数,该函数是另一个函数内的参数

我正在使用具有以下参数化的函数(无法更改):

我需要将无法添加到“数据”(回调函数使用)或“结果”或“状态”的附加信息传递给回调函数。具体来说,此信息是 my_function 调用所在的 for 循环的计数器。

为此,我在 callback_function 的主体中包含了对计数器的引用:

不幸的是,i 的最终值(在这种情况下为 9)被打印了 10 次。预期的行为是要打印循环中的每个 i 值(0 到 9)。

动态函数是否可以访问其范围之外但在其定义范围内的变量?

0 投票
2 回答
1256 浏览

function - 从另一个函数创建动态函数

我有一个将函数作为参数的 Fortran 90 子例程,我想将该函数的修改版本传递给另一个子例程。我希望程序看起来像这样:

当'g'只需要使用普通变量而不是函数时,我已经设法做类似的事情。在那种情况下,我使用全局变量将其设为全局函数,并分配给“foo”中的那些全局变量。但是,我找不到将“f”设为全局或将其分配给全局函数的方法。

有人对如何做到这一点有任何想法吗?解决方案可以随心所欲。

0 投票
1 回答
1689 浏览

scala - Scala - 创建一个基本的动态函数解析器

我是 Scala 的新手,但我想知道是否可以在该语言中实现一个简单的 Equation 解析器。

假设我有一些函数(很像 Excel 函数):

IF(Cond a=b, val_true, val_false)

MID(String, Start_pos, num_chars)- 字符串提取

LEN(String)- 字符串的长度

OR(cond1, cond2, ... condn)

AND(cond1, cond2, ... condn)

所以我的想法是我可以在运行时将公式作为来自用户的字符串作为命令行参数以及任何其他参数说IF(LEN(param1)=4,MID(param1,2,1), MID(param1,0,LEN(param1)))

这个想法是评估函数,所以如果用户提供上面的公式和字符串“scat”,那么输出将是“a”。如果给出字符串“scala”,那么输出将是“scala”...

这在 Scala 中实现起来有多容易?最好的设计方法是什么?我知道没有函数指针(在 CI 中会将公式字符串解析为 func 点的集合并从那里消失)......

任何有关如何以高效的 Scala 风格处理此问题的建议将不胜感激。

干杯!

0 投票
3 回答
2996 浏览

c++ - 使用带有汇编的 C++ 在运行时分配和创建新函数

我一直在研究一个(C++)项目,它需要完全动态分配的函数,这意味着 malloc/new 和 mprotect 然后手动修改缓冲区以汇编代码。因此,我确切地想知道,我的这个“缓冲区”需要什么,才能复制任何其他 _cdecl 函数。例如:

如果我想从字面上创建这个函数的副本,但完全是动态的,那需要什么(记住它是带有内联汇编的 C++)?对于初学者,我想我必须做这样的事情(或类似的解决方案):

在此之后,我将不得不找出ImAcDeclFunc(int a, int b);. 现在我在汇编方面仍然很糟糕,那么这个函数在 AT&T 语法中的表现如何呢?这是我的大胆尝试:

现在如果这个代码是正确的(我非常怀疑,请纠正我)我只需要找到这个代码的十六进制值(例如,'jmp' 是 0xE9 和 'inc' 是 0xFE),并直接使用这些值C++?如果我继续我以前的 C++ 代码:

在我为整个代码/缓冲区完成此操作后,对于完全动态的 _cdecl 函数是否足够(即我可以将它转换为函数指针并执行int result = ((int (*)(int, int))ImAcDeclFunc)(firstArg, secondArg)?)。而且我对使用 boost::function 或类似的东西不感兴趣,我需要该函数是完全动态的,因此我感兴趣:)

注意:这个问题是我上一个问题的延续,但有更多细节。

0 投票
1 回答
158 浏览

javascript - 如何动态更改js代码?

如何在运行时替换 JS 函数的代码?(与 C++ 函数指针的功能相同)

我试过eval()了,但是当其中一个参数包含像 13 或 10 这样的字节值时,它会引发错误。

我从中了解到 eval 实际上是在评估每个词汇原子并用它们的内容替换它们。

这些是一些示例文件来说明我正在寻找的功能:


文件 1:index.html

文件 2:dynamic_code.php

文件 3:some_file.txt


浏览器返回的错误:

0 投票
6 回答
54264 浏览

python - 使用自定义名称创建 Python 动态函数

如果已经提出并回答了这个问题,我们深表歉意。我需要做的在概念上非常简单,但不幸的是我一直无法在网上找到答案。

我需要在运行时使用自定义名称在 Python (Python2.7) 中创建动态函数。每个函数的主体也需要在运行时构建,但所有函数(几乎)都是相同的。

我从一个名字列表开始。

请注意,func_name 列表可以包含任意名称的列表,因此名称不会简单地为 func1、func2、func3、...。

我希望结果是:

我需要这样做的原因是每个函数名称都对应一个测试用例,然后从外部调用该测试用例。

更新:没有用户输入。我正在捆绑一个更大模块的两端。一端确定测试用例是什么,除此之外,填充测试用例名称的列表。另一端是函数本身,它必须与测试用例名称进行 1:1 映射。所以我有了测试用例的名称,我知道我想对每个测试用例做什么,我只需要创建具有测试用例名称的函数。由于测试用例的名称是在运行时确定的,因此基于这些测试用例的函数创建也必须在运行时进行。

更新:如果这会使事情变得更容易,我也可以将这个自定义命名函数包装在一个类中。

我可以将函数的内容(因为它们几乎相同)硬编码在一个字符串中,或​​者我可以将它基于先前定义的基类。只需要知道如何使用此内容填充函数。

例如:

提前致谢,

马赫迪