23 関数型
関数型プログラミングでは、
「関数呼び出し」「分岐」「戻り値」のみで考える
ループの代わりに再帰を用いる
手続き的プログラミング
サンプル1
function sum($array) {
$sum = 0;
foreach($array as $num) {
if(条件文) {
$sum += $num;
}
}
return $sum;
}
サンプル2
function sum($array) {
$sum = 0;
foreach($array as $num) {
$sum += $num;
}
return $sum;
}
サンプル3
var numbers = [1,2,3,4,5];
var doubled = [];
for(var i = 0; i < numbers.length; i++) {
doubled.push( numbers[i] * 2 );
}
サンプル4
var numbers = [1,2,3,4,5];
var total = 0;
for(var i = 0; i < numbers.length; i++) {
total += numbers[i];
}
関数型プログラミング
サンプル1
function sum($array) {
$condition = function($num) {
return (条件文);
};
$result = array_filter($array, $condition);
$sum = array_sum($result);
return $sum;
}
サンプル2
function sum($array) {
if(count($array) === 0) {
return 0;
}else if(count($array) === 1) {
return $array[0];
}else {
return $array[0] + sum(array_slice($array, 1));
}
}
サンプル3
var numbers = [1,2,3,4,5];
var doubled = numbers.map( function(n) {
return n * 2;
});
サンプル4
var numbers = [1,2,3,4,5];
var total = numbers.reduce( function(sum, n) {
return sum + n;
});