20140122【JS】高階関数を使う
お題
高階関数を使う
プログラム概要
円錐の体積を求め、体積をもとにサイズを分類し
サイズごとに合格/不合格を表示する
ソース
// 円錐の体積を求める関数
function calcCone(radius, height) {
// 底面の面積
var dimension = Math.pow(radius, 2) * Math.PI;
// 体積 = 1/3 * 底面積 * 高さ
return dimension * height / 3;
}
// 体積によりサイズを分離する関数1
function getSize(dimension) {
if (dimension >= 100) {
return 'L'; // 100以上の場合はLサイズ
} else if (dimension >= 50) {
return 'M'; // 50以上100未満の場合はMサイズ
} else {
return 'S';
}
}
// 体積によりサイズを分離する関数2
function getSize2(dimension) {
if (dimension >= 80) {
return 'L'; // 80以上の場合はLサイズ
} else if (dimension >= 40) {
return 'M'; // 40以上80未満の場合はMサイズ
} else {
return 'S';
}
}
// 関数を引数にとりサイズの判定を行う高階関数
function checkSize(func, dimension) {
var size = func(dimension);
if (size == 'L' || size == 'M') {
return true;
}
return false;
}
var dimension = calcCone(3, 5);
if (checkSize(getSize2, dimension)) {
alert('合格です: ' + dimension);
} else {
alert('不合格です: ' + dimension);
}
実行結果
※赤文字の箇所をgetSizeに変更するとサイズの分類が変わり不合格となる