You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ramda执行数组中的表达式字符串?

使用Ramda的R.forEach执行表达式字符串数组

嘿,我来帮你搞定这个Ramda的问题!问题出在R.forEach的参数要求上——它第一个参数需要是可执行的函数,而你的数组里存的是字符串形式的表达式,直接丢给forEach当然不会执行啦。我们只需要加一步:把字符串转成可执行的函数,再交给R.forEach处理就行。

解决方案步骤

  1. 先写一个辅助函数,负责把单个表达式字符串转换成可执行的逻辑:

    const executeExpr = expr => Function(expr)();
    

    这个函数的作用和你之前用的(Function(...newPIXI))()类似,只不过是针对单个表达式的。

  2. 用R.forEach遍历数组,把每个表达式字符串传给这个辅助函数执行:

    const newPIXI = ["container1 = new PIXI.Container();","container2 = new PIXI.Container();","container3 = new PIXI.Container();"];
    R.forEach(executeExpr, newPIXI);
    

完整示例代码

const newPIXI = ["container1 = new PIXI.Container();","container2 = new PIXI.Container();","container3 = new PIXI.Container();"];

// 辅助函数:执行单个表达式字符串
const executeExpr = expr => Function(expr)();

// 用Ramda的forEach批量执行
R.forEach(executeExpr, newPIXI);

为什么这样能行?

你之前用的(Function(...newPIXI))()是把所有表达式字符串拼接成一个大的函数体一次性执行;而用R.forEach配合辅助函数,是逐个执行每个表达式字符串,最终效果是完全一致的——container1、container2、container3都会被正确赋值为新的PIXI容器实例。

另外要注意:Function()创建的函数会在当前作用域(浏览器是全局window,Node.js或模块环境是模块作用域)执行,所以这些容器变量会被挂载到对应的作用域中,和你原来的执行方式保持一致。

内容的提问来源于stack exchange,提问作者Rio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:17:53