命令型プログラミングとの比較
// 命令型プログラミング
var result= 0;
for(var n = 1; n <= 10; n++) {
result = result + n;
}
// 関数型プログラミング
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var plus = function(a, b) {
return (a + b);
};
var result = _.reduce(numbers, plus);
TAKAMURA'Narimichi'/'第'4'回'Topotal'輪読会@2015/03/18 28
validator!関数の利用例
var zero =validator("0 ではいけません", function(n) { return 0 === n; });
var number = validator(" 引数は数値である必要があります", _.isNumber);
function sqr(n) {
if (!number(n)) throw new Error(number.message);
if (zero(n)) throw new Error(zero.message);
return n * n;
}
sqr(10);
//=> 100
sqr(0);
// Error: 0 ではいけません
sqr('');
// Error: 引数は数値である必要があります
TAKAMURA'Narimichi'/'第'4'回'Topotal'輪読会@2015/03/18 59