有人可以帮我这个语法吗?

问题描述:

这可能是愚蠢的,但我不熟悉的语法在这里:有人可以帮我这个语法吗?

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.

我应该在哪里编写代码来做到这一点?

+0

您有两个无关的问题。一个关于如何编写一个数字的程序,以及语法/结构是什么... – Li357

+2

您可以从这里开始:https://nodejs.org/api/ – osmanraifgunes

你可以把它放在一个文件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]); 
    } 
}) 

的代码输出背面什么用户在键入

+0

谢谢,这有帮助! –

+0

@ y-intercept如果你看到任何你喜欢的答案,请随时注册。如果其中一个答案最能解决您的问题,请随时将其标记为已接受。 – Ouroborus

+0

@Ouroborus,他还不能满足,他需要1个点,我提出了这个问题,你也可以赞成它:) –

似乎所有的基础设施的是存在的。剩下的就是实际上调整你的数字。

process.stdinprocess.stdoutnode 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); 
});