ФÑнкÑÐ¸Ñ - ÑÑÑоковÑй бÑÑеÑ
РнекоÑоÑÑÑ ÑзÑÐºÐ°Ñ Ð¿ÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑеÑÑвÑÐµÑ Ð¾Ð±ÑÐµÐºÑ Â«ÑÑÑоковÑй бÑÑеÑ», коÑоÑÑй аккÑмÑлиÑÑÐµÑ Ð²Ð½ÑÑÑи ÑÐµÐ±Ñ Ð·Ð½Ð°ÑениÑ. Ðго ÑÑнкÑионалÑноÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей:
- ÐобавиÑÑ Ð·Ð½Ð°Ñение в бÑÑеÑ.
- ÐолÑÑиÑÑ ÑекÑÑее ÑодеÑжимое.
ÐадаÑа â ÑеализоваÑÑ ÑÑÑоковÑй бÑÑÐµÑ Ð½Ð° ÑÑнкÑиÑÑ Ð² JavaScript, Ñо ÑледÑÑÑим ÑинÑакÑиÑом:
- Создание обÑекÑа:
var buffer = makeBuffer();. - ÐÑзов
makeBufferдолжен возвÑаÑаÑÑ ÑакÑÑ ÑÑнкÑиÑbuffer, коÑоÑÐ°Ñ Ð¿Ñи вÑзовеbuffer(value)добавлÑÐµÑ Ð·Ð½Ð°Ñение в некоÑоÑое внÑÑÑеннее Ñ ÑанилиÑе, а пÑи вÑзове без аÑгÑменÑовbuffer()â возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾.
ÐÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ ÑабоÑÑ:
function makeBuffer() { /* Ð²Ð°Ñ ÐºÐ¾Ð´ */ }
var buffer = makeBuffer();
// добавиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ðº бÑÑеÑÑ
buffer('ÐамÑканиÑ');
buffer(' ÐÑполÑзоваÑÑ');
buffer(' ÐÑжно!');
// полÑÑиÑÑ ÑекÑÑее знаÑение
alert( buffer() ); // ÐамÑÐºÐ°Ð½Ð¸Ñ ÐÑполÑзоваÑÑ ÐÑжно!
ÐÑÑÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ пÑеобÑазовÑваÑÑ Ð²Ñе даннÑе к ÑÑÑÐ¾ÐºÐ¾Ð²Ð¾Ð¼Ñ ÑипÑ:
var buffer = makeBuffer();
buffer(0);
buffer(1);
buffer(0);
alert( buffer() ); // '010'
РеÑение не должно иÑполÑзоваÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑе пеÑеменнÑе.
ÐÑкÑÑÑÑ Ð¿ÐµÑоÑниÑÑ Ñ ÑеÑÑами Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñи.
ТекÑÑее знаÑение ÑекÑÑа Ñдобно Ñ
ÑаниÑÑ Ð² замÑкании, в локалÑной пеÑеменной makeBuffer:
function makeBuffer() {
var text = '';
return function(piece) {
if (arguments.length == 0) { // вÑзов без аÑгÑменÑов
return text;
}
text += piece;
};
};
var buffer = makeBuffer();
// добавиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ðº бÑÑеÑÑ
buffer('ÐамÑканиÑ');
buffer(' ÐÑполÑзоваÑÑ');
buffer(' ÐÑжно!');
alert( buffer() ); // 'ÐамÑÐºÐ°Ð½Ð¸Ñ ÐÑполÑзоваÑÑ ÐÑжно!'
var buffer2 = makeBuffer();
buffer2(0);
buffer2(1);
buffer2(0);
alert( buffer2() ); // '010'
ÐаÑалÑное знаÑение text = '' â пÑÑÑÐ°Ñ ÑÑÑока. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ text += piece пÑибавлÑÐµÑ piece к ÑÑÑоке, авÑомаÑиÑеÑки пÑеобÑазÑÑ ÐµÐ³Ð¾ к ÑÑÑÐ¾ÐºÐ¾Ð²Ð¾Ð¼Ñ ÑипÑ, как и ÑÑебовалоÑÑ Ð² ÑÑловии.
function makeBuffer() {
var text = '';
return function(piece) {
if (arguments.length == 0) { // вÑзов без аÑгÑменÑов
return text;
}
text += piece;
};
};
ÐÑкÑÑÑÑ ÑеÑение Ñ ÑеÑÑами в пеÑоÑниÑе.