"NodeJS" (外部计算系统)
更多信息
- 支持 Node.js 版本 7.10.1 以及更高版本.
- Node.js 是一个内置于 Chrome 的 V8 JavaScript 引擎的 JavaScript 运行时.
- 要配置 Node.js 以便用于 Wolfram 语言中,请遵循为 ExternalEvaluate 配置 NodeJS 工作流程的说明.
ExternalEvaluate 用法
- ExternalEvaluate["NodeJS",code] 在 Node.js REPL 中执行代码字符串并以 Wolfram 语言表达式的方式返回结果.
- ExternalEvaluate["NodeJS""String",code] 在 Node.js REPL 中执行代码字符串,不诠释结果.
- ExternalEvaluate["NodeJS""type",code] 中 "type" 可取的设置包括:
-
"Expression" 尝试转换为 Wolfram 语言表达式 "String" 给出外部运算器输出的原始字符串 "ExternalObject" 用 ExternalObject 的形式返回结果
数据类型
- 支持以下 JavaScript 内置类型:
-
Boolean True False 布尔 True/False 值 Number Integer,Real 整数或实数 String String 字符的字符串 Array List 对象列表 Map Association 关联数组 Undefined Null 未定义的值 - 对于任何不支持的 NodeJS 类型,如果是函数,返回 ExternalFunction;任何其他不支持的 NodeJS 类型则返回 ExternalObject.
支持的外部运算
- ExternalOperation["Eval","code"] 表示 "code" 的外部运算.
- ExternalOperation["Eval","code",assoc] 表示 "code" 的外部运算,参数由 assoc 给出.
- ExternalOperation["Call",func,arg1,arg2,…] 调用函数 func,给定参数为 arg1、arg2、….
- ExternalOperation["GetAttribute",obj,"attr"] 获取 obj 的属性 "attr".
- ExternalOperation["SetAttribute",obj,"attr",val] 将 obj 的属性 "attr" 设为给定值 val.
- ExternalOperation["Cast",obj,"type"]将 obj 强制设为给定的 "type".
范例
打开所有单元关闭所有单元基本范例 (2)
范围 (28)
使用 NodeJS 创建 ExternalFunction:
会话选项 (9)
"ReturnType" (3)
命令选项 (10)
"Command" (4)
"Arguments" (2)
如果你需要传递列表作为第一个参数,则该列表需要明确地包装在一个额外的列表中:
你可以在 "Command" 中命名一个函数,然后用 "Arguments" 直接调用它:
同样的结果可以通过使用 Rule 来归档:
另一种方法是定义一个 ExternalFunction:
"TemplateArguments" (2)
当运行命令时,你可以内联一个 TemplateExpression:
你可以使用 "TemplateArguments" 对 TemplateSlot 进行填充:
如果你需要传递列表作为第一个参数,请将该列表包装在一个额外的列表中:
你可以为模板槽命名,并使用 Association 来向模板传递命名的参数:
外部运算 (8)
"Eval" (1)
"Call" (3)
定义一个在 NodeJS 中创建函数的 ExternalOperation:
通过运行 ExternalOperation "Call" 调用函数:
用 ExternalEvaluate 执行运算:
"Call" 运算的任何参数都可以是 ExternalOperation:
还可以通过执行以下操作直接在 ExternalEvaluate 中传递参数:
创建 NodeJS 函数 max 的 ExternalFunction:
创建 NodeJS 函数的 ExternalFunction:
或使用 ExternalObject 子值:
"GetAttribute" (2)
返回一个 "Math" 对象的 ExternalObject:
创建表示 "Math" 对象的 ExternalObject:
用 ExternalOperation 获取函数:
对于大多数运算器,"GetAttribute" 是默认运算,可以省略 ExternalOperation:
"SetAttribute" (1)
"Cast" (1)
创建表示数组的 ExternalObject:
用 "Expression" 以 Wolfram 语言表达式的形式返回对象:
也可以在 ExternalObject 子值中运行 Cast 运算:
符号 Expression 是完成相同运算的更简便的方式:
符号 String 是完成相同运算的更简便的方式:
用 ExternalObject 返回对象:
符号 ExternalObject 是完成相同运算的更简便的方式:
在 ExternalEvaluate 中使用 "ReturnType" 可以得到同样的结果: