開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Node.js(JavaScript Engine)
Eloquent JavaScript(Marijn Haverbeke 著、No Starch Press)のPart 1(Language)、Chapter 6(The Secret Life of Objects)、Exercises(Sequence Interface)を取り組んでみる。
Exercises(Sequence Interface)
コード(Emacs)
'use strict';
var ArraySeq,
RangeSeq,
ary0 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
ary1 = [1,2],
ary_seq0,
ary_seq1,
range_seq0,
range_seq1,
elem;
ArraySeq = function (array) {
this.array = array;
this.cur = 0;
};
ArraySeq.prototype = Object.create(Array.prototype);
ArraySeq.prototype.logFive = function () {
var i,
max = Math.min(this.array.length, 5);
for (i = 0; i < max; i += 1) {
console.log(this.array[i]);
}
};
ArraySeq.prototype.next = function () {
var elem = this.array[this.cur];
this.cur += 1;
return elem;
};
ary_seq0 = new ArraySeq(ary0);
ary_seq1 = new ArraySeq(ary1);
ary_seq0.logFive();
console.log();
ary_seq1.logFive();
console.log();
RangeSeq = function (from, to) {
var ary = [],
i;
for (i = from; i < to; i += 1) {
ary.push(i);
}
ArraySeq.call(this, ary);
};
RangeSeq.prototype = Object.create(ArraySeq.prototype);
range_seq0 = new RangeSeq(1, 10);
range_seq1 = new RangeSeq(10, 1);
range_seq0.logFive();
console.log();
range_seq1.logFive();
console.log();
for (elem = range_seq0.next(); elem !== undefined;
elem = range_seq0.next()) {
console.log(elem);
}
console.log();
for (elem = range_seq1.next(); elem !== undefined;
elem = range_seq1.next()) {
console.log(elem);
}
console.log();
入出力結果(Terminal, Node.js)
$ node sample3.js 1 2 3 4 5 1 2 1 2 3 4 5 1 2 3 4 5 6 7 8 9 $
0 コメント:
コメントを投稿