我在使用node.js时遇到问题,我不太熟悉。
我有一个JavaScript文件,需要使用.load "filename.js"
将其加载到node.js中。
当我运行命令时,我只是从文件中的代码中打印出来。
这是我要加载的文件的代码。我已向我建议了更改。但我仍然无法获得完整的代码。
class ArithmeticTaskRunner
{
constructor()
{
this.tasks = [];
}
addNegationTask()
{
const negationTask = (x) => -x;
this.tasks.push(negationTask)
return this;
}
addAdditionTask(y)
{
const additionByY = (x) => x + y;
this.tasks.push(additionByY)
return this;
}
addMultiplicationTask(y)
{
const multiplyByY = (x) => x * y;
this.tasks.push(multiplyByY)
return this;
}
taskCount()
{
return this.tasks.length;
}
execute(n)
{
let currentResult = n;
for(let task of this.tasks)
{
currentResult = task(currentResult)
}
return currentResult;
}
}
let taskRunner = new ArithmeticTaskRunner()
taskRunner.addAdditionTask(10)
taskRunner.addNegationTask()
taskRunner.addMultiplicationTask()
taskRunner.execute(2)
这是此任务所需的输出和输入的示例
1。
让taskRunner = new ArithmeticTaskRunner() 未定义 taskRunner.addAdditionTask(2) 未定义 taskRunner.addMultiplicationTask(4) 未定义 taskRunner.addAdditionTask(10) 未定义 taskRunner.execute(2) 26 taskRunner.execute(-2) 10
2。
taskRunner.execute() -5 taskRunner.execute(10) -10 taskRunner.taskCount 3
答案 0 :(得分:2)
如果要进行REPL会话并在命令行中运行命令,可以使用repl
模块。
const repl = require('repl');
class ArithmeticTaskRunner {
... // Your class definition
}
// This starts the REPL session with the ArithmeticTaskRunner defined
repl.start().context.ArithmeticTaskRunner = ArithmeticTaskRunner;
然后在终端机中
node filename.js
当节点正在运行时:
let taskRunner = new ArithmeticTaskRunner()
taskRunner.addAdditionTask(2)
taskRunner.addMultiplicationTask(4)
taskRunner.addAdditionTask(10)
taskRunner.execute(2)
taskRunner.execute(-2)
如果要完全运行代码并输出结果,请在代码中使用console.log
并运行node filename.js
:
class ArithmeticTaskRunner {
... // Your class definition
}
let taskRunner = new ArithmeticTaskRunner()
taskRunner.addAdditionTask(2)
taskRunner.addMultiplicationTask(4)
taskRunner.addAdditionTask(10)
console.log(taskRunner.execute(2))
console.log(taskRunner.execute(-2))
在终端中:
node filename.js
答案 1 :(得分:1)
我假设您基本上已经在命令行上完成了以下操作:
node
.load ArithmeticTaskRunner.js
之所以只看到打印出来的代码,是因为您只有一个类定义。您没有TaskRunner
的实例。如果这是您的意图,请在代码底部添加以下内容:
const taskRunner = new TaskRunner();
console.log(taskRunner);
然后,当您再次尝试这些命令行步骤时,它将打印出TaskRunner
的实例及其上的方法。
但是,.load
命令的全部目的是将您的脚本放入Node.js REPL中。另外,您也可以在命令行中执行以下操作:
node
.load ArithmeticTaskRunner.js
const taskRunner = new TaskRunner();
console.log(taskRunner);
这将使您可以在命令行上进行工作,而无需将其硬编码到脚本中。
更新
如果您打算在不打印代码的情况下执行代码,则可以执行以下操作:
node ArithmeticTaskRunner.js
但是您不会将代码提供给全局实例。您必须像在我最初所做的那样,将代码添加到创建'TaskRunner'实例并加以利用的脚本中,并将其保存到该文件中。
class ArithmeticTaskRunner
{
constructor()
{
this.tasks = [];
}
addNegationTask()
{
const negationTask = (x) => -x;
this.tasks.push(negationTask)
return this;
}
addAdditionTask(y)
{
const additionByY = (x) => x + y;
this.tasks.push(additionByY)
return this;
}
addMultiplicationTask(y)
{
const multiplyByY = (x) => x * y;
this.tasks.push(multiplyByY)
return this;
}
taskCount()
{
return this.tasks.length;
}
execute(n)
{
let currentResult = n;
for(let task of this.tasks)
{
currentResult = task(currentResult)
}
return currentResult;
}
}
const arithmeticTaskRunner = new ArithmeticTaskRunner ();
console.log(arithmeticTaskRunner );
之后,请尝试在命令行上执行以下步骤:
node
.load ArithmeticTaskRunner.js
更新2
这将打开Node REPL(出现“>”前导)。然后,一次一行地执行以下命令:
let taskRunner = new ArithmeticTaskRunner()
taskRunner.addAdditionTask(2)
taskRunner.addMultiplicationTask(4)
taskRunner.addAdditionTask(10)
taskRunner.execute(2)
这应该打印26。
taskRunner.execute(-2)
这应该打印10。