2017-01-09 20 views
0

這可能是愚蠢的,但我不熟悉的語法在這裏:有人可以幫我這個語法嗎?

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

回答

2

你可以把它放在一個文件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個點,我提出了這個問題,你也可以贊成它:) –

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); 
}); 
相關問題