自定义评估函数
🌐 Custom evaluation functions
当创建一个新的 repl.REPLServer 时,可以提供自定义评估函数。例如,这可以用于实现完全自定义的 REPL 应用。
🌐 When a new repl.REPLServer is created, a custom evaluation function may be
provided. This can be used, for instance, to implement fully customized REPL
applications.
执行函数接受以下四个参数:
🌐 An evaluation function accepts the following four arguments:
code<string> 要执行的代码(例如1 + 1)。context<Object> 代码执行的上下文。这可以是 JavaScript 的global上下文,也可以是特定于 REPL 实例的上下文,这取决于useGlobal选项。replResourceName<string> 与当前代码评估相关联的 REPL 资源标识符。这对于调试目的可能很有用。callback<Function> 代码评估完成后要调用的函数。回调函数有两个参数:- 如果在评估过程中发生错误,则提供一个错误对象;如果没有发生错误,则为
null或undefined。 - 代码评估的结果(如果提供了错误,则此结果不相关)。
- 如果在评估过程中发生错误,则提供一个错误对象;如果没有发生错误,则为
下面示例演示了一个 REPL,它可以对给定的数字进行平方计算,如果提供的输入实际上不是数字,则会打印错误信息:
🌐 The following illustrates an example of a REPL that squares a given number, an error is instead printed if the provided input is not actually a number:
import repl from 'node:repl'; function byThePowerOfTwo(number) { return number * number; } function myEval(code, context, replResourceName, callback) { if (isNaN(code)) { callback(new Error(`${code.trim()} is not a number`)); } else { callback(null, byThePowerOfTwo(code)); } } repl.start({ prompt: 'Enter a number: ', eval: myEval });const repl = require('node:repl'); function byThePowerOfTwo(number) { return number * number; } function myEval(code, context, replResourceName, callback) { if (isNaN(code)) { callback(new Error(`${code.trim()} is not a number`)); } else { callback(null, byThePowerOfTwo(code)); } } repl.start({ prompt: 'Enter a number: ', eval: myEval });