有人可以帮我这个语法吗?
这可能是愚蠢的,但我不熟悉的语法在这里:有人可以帮我这个语法吗?
var stdin = '';
process.stdin.on('data', function (chunk) {
stdin += chunk;
}).on('end', function() {
var lines = stdin.split('\n');
for(var i=0; i<lines.length; i++) {
process.stdout.write(lines[i]);
}
});
我应该写一个程序,一个数的平方,我知道该怎么做,但我从来没有遇到过这种类型的结构。我理解这个循环,并且process.stdout.write
本质上是console.log
测试用例输入是5和25.输出应该是25和625.
我应该在哪里编写代码来做到这一点?
你可以把它放在一个文件sample.js
并运行它:
node sample.js
这process.stdin
指的是标准输入流(从其他应用程序的输入数据,例如,一个shell输入,所以基本上是这样的:
process.stdin.on('data', function (chunk) {
stdin += chunk;
})
说,每当有新的data
(用户键入的东西放到一个控制台,托管应用程序发送一些数据),读取它并将其存储在stdin
变量。然后,当stdin
流结束(例如,用户输入完数据):
.on('end', function() {
var lines = stdin.split('\n');
for(var i=0; i<lines.length; i++) {
process.stdout.write(lines[i]);
}
})
的代码输出背面什么用户在键入
谢谢,这有帮助! –
@ y-intercept如果你看到任何你喜欢的答案,请随时注册。如果其中一个答案最能解决您的问题,请随时将其标记为已接受。 – Ouroborus
@Ouroborus,他还不能满足,他需要1个点,我提出了这个问题,你也可以赞成它:) –
似乎所有的基础设施的是存在的。剩下的就是实际上调整你的数字。
process.stdin
和process.stdout
是node streams它们是异步的,所以使用事件来告诉你它们是怎么回事。 data
是有数据准备处理时的事件,end
用于没有更多数据的情况。该代码只需要snarfs process.stdin
,然后,一旦数据全部在内存中,就会对其进行处理。
的end
匿名函数很可能是最好这样实现的:
function() {
stdin.split('\n').foreach(function(line){
var value = line.trim()|0;
process.stdout.write(value * value);
});
}
题外话:内存占用可能由在处理流,因为它进来,而不是收集,然后处理这一切得到改善一旦。这取决于输入和输入缓冲区的大小:
var buffer = '';
var outputSquare = function(line) {
var value = line.trim()|0;
process.stdout.write(value * value);
};
process.stdin.on('data', function (chunk) {
var lines = (buffer + chunk).split('\n');
buffer = lines.pop();
lines.foreach(outputSquare);
}).on('end', function() {
outputSquare(buffer);
});
您有两个无关的问题。一个关于如何编写一个数字的程序,以及语法/结构是什么... – Li357
您可以从这里开始:https://nodejs.org/api/ – osmanraifgunes