2017-01-09 7 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 относится к потоку стандартного ввода (поступающие данные из других приложений, например, входной оболочки, поэтому в основном это:

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.stdin и process.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); 
    }); 
} 

Off теме: Объем памяти может быть улучшена за счет обработки потока, как это происходит в, а не собирать его, а затем обрабатывать все это в один раз. Это зависит от размеров входного и входного буфера:

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); 
});