- Day 11:関数の応用で「柔らかく賢い関数」を作る
- Optional Parameter:あってもなくてもいい引数
- Default Parameter:渡されなかったときの「標準値」
- Rest Parameter:可変長の引数をまとめて受け取る
- Arrow Function:短く書ける関数の記法
- Callback:関数を「引数として渡す」
- 実践:商品価格計算関数を設計する
- Step 1:基本の価格計算関数を作る
- Step 2:割引率をOptional Parameterで扱う
- Step 3:消費税率をDefault Parameterで扱う
- Step 4:商品価格計算を1つの関数にまとめる
- Step 5:Arrow Functionで書き直してみる
- Step 6:Callbackで「計算後の処理」を差し込む
- Day 11 練習テンプレート
- Day 11のまとめ
- Day 11:関数の応用を「手になじませる」練習
- Optional Parameter:あってもなくてもいい引数
- Default Parameter:渡されなかったときの「標準値」
- Rest Parameter:可変長引数で「いくつでもどうぞ」
- Arrow Function:短く書ける関数の記法
- Callback Function:関数を「引数として渡す」
- 練習1:デフォルト値付き関数を作る
- 練習2:可変長引数で合計・平均を計算する
- 練習3:Arrow Functionで書く「短い関数」
- 練習4:Callback Functionで「後処理」を差し込む
- Day 11 練習テンプレート
- Day 11のまとめ
Day 11:関数の応用で「柔らかく賢い関数」を作る
Day 11では、関数をもう一歩進めて、Optional Parameter / Default Parameter / Rest Parameter / Arrow Function / Callback といった「応用テクニック」を扱っていきます。 題材は「商品価格計算」。 商品価格・数量・割引率・消費税率を使って、現実的な計算ロジックを、柔軟な関数として設計する流れを体験していきます。
Optional Parameter:あってもなくてもいい引数
Optional Parameterとは
Optional Parameter(オプショナルパラメータ)は、「引数があってもなくてもいい」という意味の引数です。 TypeScriptでは、引数名の後ろに ? を付けて表現します。
function greet(name: string, title?: string): string {
// title があればそれも含めて挨拶文を作る
if (title) {
return `${title}の${name}さん、こんにちは`;
} else {
return `${name}さん、こんにちは`;
}
}
console.log(greet("Taro")); // Taroさん、こんにちは
console.log(greet("Hanako", "先生")); // 先生のHanakoさん、こんにちは
TypeScriptポイント:
title?: stringが Optional Parameterです。- 呼び出し側は、
greet("Taro")のように省略してもOKです。 - 「状況によって渡したり渡さなかったりする情報」を扱うときに便利です。
Default Parameter:渡されなかったときの「標準値」
Default Parameterとは
Default Parameter(デフォルトパラメータ)は、「引数が渡されなかったときに使う標準値」をあらかじめ決めておく仕組みです。
function greetWithDefault(name: string, title: string = "さん"): string {
// title が渡されなければ "さん" が使われる
return `${name}${title}、こんにちは`;
}
console.log(greetWithDefault("Taro")); // Taroさん、こんにちは
console.log(greetWithDefault("Hanako", "先生")); // Hanako先生、こんにちは
TypeScriptポイント:
title: string = "さん"のように、=で初期値を指定します。- 呼び出し側が値を渡さなかった場合、その初期値が使われます。
- 「ほとんどの場合はこの値でOK、たまに変えたい」というときにとても便利です。
Rest Parameter:可変長の引数をまとめて受け取る
Rest Parameterとは
Rest Parameter(レストパラメータ)は、「いくつ渡されるかわからない引数を、配列としてまとめて受け取る」ための仕組みです。 ... を使って表現します。
function sumAll(...numbers: number[]): number {
let sum = 0;
for (const n of numbers) {
sum += n;
}
return sum;
}
console.log(sumAll(1, 2, 3)); // 6
console.log(sumAll(10, 20, 30, 40)); // 100
TypeScriptポイント:
...numbers: number[]が Rest Parameterです。- 呼び出し側は、
sumAll(1, 2, 3)のように、好きな数だけ引数を渡せます。 - 「複数の値をまとめて処理したいけれど、個数が決まっていない」というときに役立ちます。
Arrow Function:短く書ける関数の記法
Arrow Functionとは
Arrow Function(アロー関数)は、関数を短く書くための記法です。 (引数) => { 処理 } という形で書きます。
// 通常の関数
function double(n: number): number {
return n * 2;
}
// アロー関数版
const doubleArrow = (n: number): number => {
return n * 2;
};
console.log(double(5)); // 10
console.log(doubleArrow(5)); // 10
TypeScriptさらに、1行で書ける場合は return と波括弧を省略できます。
const doubleShort = (n: number): number => n * 2;
console.log(doubleShort(5)); // 10
TypeScriptポイント:
- アロー関数は、
mapやfilterなどの配列メソッドと相性がよく、よく使われます。 - 「短く書けるけれど、型はしっかり付ける」というスタイルがTypeScriptらしい書き方です。
Callback:関数を「引数として渡す」
Callbackとは
Callback(コールバック)は、「関数を引数として渡す」という考え方です。 「処理の一部を、呼び出し側に任せる」イメージです。
// callback を受け取る関数
function runTwice(callback: () => void): void {
callback(); // 1回目
callback(); // 2回目
}
// 実際に渡す関数(アロー関数)
const sayHello = () => {
console.log("こんにちは");
};
runTwice(sayHello);
// こんにちは
// こんにちは
TypeScriptポイント:
callback: () => voidは、「引数なし・戻り値なしの関数」を受け取るという意味です。- 呼び出し側は、
runTwice(sayHello)のように関数を渡します。 - 「処理の中で、特定のタイミングで呼び出したい処理を外から差し込む」というときに使われます。
実践:商品価格計算関数を設計する
ここからは、商品価格計算を題材に、今日の学習内容を組み合わせていきます。
- 商品価格(単価)
- 数量
- 割引率(Optional / Default)
- 消費税率(Default)
を使って、柔軟に使える価格計算関数を作ってみましょう。
Step 1:基本の価格計算関数を作る
まずは、シンプルな「税抜き価格 × 数量」の関数から始めます。
// 税抜き価格と数量から小計を計算する関数
function calcSubtotal(price: number, quantity: number): number {
// price: 商品の単価
// quantity: 数量
return price * quantity;
}
const subtotal = calcSubtotal(1000, 3); // 1000円 × 3個
console.log("小計:", subtotal); // 3000
TypeScriptポイント:
- 引数
price: number, quantity: number - 戻り値
number - 「まずは小計を出す」という基本ステップを関数に切り出しています。
Step 2:割引率をOptional Parameterで扱う
次に、「割引率がある場合は割り引く」処理を追加します。 割引率は、ない場合もあるので、Optional Parameterにしてみます。
// 小計と割引率から、割引後の金額を計算する関数
function applyDiscount(subtotal: number, discountRate?: number): number {
// discountRate が渡されていない場合は、割引なし(そのまま)
if (discountRate === undefined) {
return subtotal;
}
// 割引率は 0.1 なら 10% 割引というイメージ
const discountAmount = subtotal * discountRate;
const discountedTotal = subtotal - discountAmount;
return discountedTotal;
}
const subtotal2 = 3000;
// 割引なし
console.log("割引なし:", applyDiscount(subtotal2)); // 3000
// 10%割引
console.log("10%割引:", applyDiscount(subtotal2, 0.1)); // 2700
TypeScript深掘りポイント:
discountRate?: numberが Optional Parameterです。discountRate === undefinedで「渡されていないかどうか」をチェックしています。- 「割引があるときだけ割り引く」という現実的なロジックを、関数に閉じ込めています。
Step 3:消費税率をDefault Parameterで扱う
次に、消費税率を扱います。 消費税率は、ほとんどの場合は同じ値(例:10%)なので、Default Parameterがぴったりです。
// 税込み金額を計算する関数
function applyTax(amount: number, taxRate: number = 0.1): number {
// taxRate が渡されなければ 0.1(10%)が使われる
const tax = amount * taxRate;
const totalWithTax = amount + tax;
return totalWithTax;
}
const amount = 2700;
// デフォルトの 10% 消費税
console.log("税込(10%):", applyTax(amount)); // 2970
// 8% 消費税(別の税率を指定)
console.log("税込(8%):", applyTax(amount, 0.08)); // 2916
TypeScript深掘りポイント:
taxRate: number = 0.1が Default Parameterです。- 呼び出し側が税率を渡さなければ、10%が自動的に使われます。
- 「標準値が決まっているけれど、状況によって変えたいこともある」というときに、とても自然な書き方になります。
Step 4:商品価格計算を1つの関数にまとめる
ここまでの要素を組み合わせて、商品価格計算の総合関数を作ってみます。
- 単価
price - 数量
quantity - 割引率
discountRate(Optional) - 消費税率
taxRate(Default)
// 商品価格計算の総合関数
function calcTotalPrice(
price: number,
quantity: number,
discountRate?: number, // Optional:割引率(例: 0.1 で 10%)
taxRate: number = 0.1 // Default:消費税率(デフォルト 10%)
): number {
// 1. 小計を計算
const subtotal = price * quantity;
// 2. 割引を適用(割引率があれば)
let discounted = subtotal;
if (discountRate !== undefined) {
const discountAmount = subtotal * discountRate;
discounted = subtotal - discountAmount;
}
// 3. 消費税を適用
const tax = discounted * taxRate;
const total = discounted + tax;
return total;
}
// テスト
console.log("=== 商品価格計算 ===");
// 単価 1000円 × 3個、割引なし、消費税10%
console.log("ケース1:", calcTotalPrice(1000, 3));
// 単価 1000円 × 3個、10%割引、消費税10%
console.log("ケース2:", calcTotalPrice(1000, 3, 0.1));
// 単価 2000円 × 2個、5%割引、消費税8%
console.log("ケース3:", calcTotalPrice(2000, 2, 0.05, 0.08));
TypeScript重要ポイント:
- Optional ParameterとDefault Parameterを同時に使っています。
- 「割引率がない場合は割引なし」「税率が渡されない場合は10%」という、現実的なルールを関数に閉じ込めています。
- 関数の中で処理を順番に並べることで、「計算の流れ」が読みやすくなっています。
Step 5:Arrow Functionで書き直してみる
同じ calcTotalPrice を、Arrow Functionで書いてみると、記法の違いが見えてきます。
// Arrow Function版の商品価格計算関数
const calcTotalPriceArrow = (
price: number,
quantity: number,
discountRate?: number,
taxRate: number = 0.1
): number => {
const subtotal = price * quantity;
let discounted = subtotal;
if (discountRate !== undefined) {
const discountAmount = subtotal * discountRate;
discounted = subtotal - discountAmount;
}
const tax = discounted * taxRate;
const total = discounted + tax;
return total;
};
console.log("Arrow版 ケース1:", calcTotalPriceArrow(1000, 3));
console.log("Arrow版 ケース2:", calcTotalPriceArrow(1000, 3, 0.1));
TypeScriptポイント:
functionキーワードの代わりに、const 関数名 = (引数) => { ... }という形になっています。- 型の付け方は通常の関数と同じです。
- 「関数を変数として扱う」感覚が少し見えてきます。
Step 6:Callbackで「計算後の処理」を差し込む
最後に、Callbackを使って、「計算後に何をするか」を外から指定できるようにしてみます。
// 計算結果を受け取って何かするためのコールバック型
type PriceCallback = (total: number) => void;
// コールバックを受け取る商品価格計算関数
function calcTotalPriceWithCallback(
price: number,
quantity: number,
discountRate: number | undefined,
taxRate: number,
callback: PriceCallback
): void {
const subtotal = price * quantity;
let discounted = subtotal;
if (discountRate !== undefined) {
const discountAmount = subtotal * discountRate;
discounted = subtotal - discountAmount;
}
const tax = discounted * taxRate;
const total = discounted + tax;
// 計算結果をコールバックに渡す
callback(total);
}
// 実際に使うコールバック(アロー関数)
const printTotal = (total: number): void => {
console.log("計算結果(コールバック):", total);
};
// 実行
calcTotalPriceWithCallback(1000, 3, 0.1, 0.1, printTotal);
TypeScript深掘りポイント:
PriceCallback型で、「totalを受け取って何かする関数」を表現しています。calcTotalPriceWithCallbackは、計算ロジックだけを担当し、「結果をどう扱うか」はコールバックに任せています。- こうした「役割分担」は、コードの再利用性やテストのしやすさを高めるうえで、とても重要です。
Day 11 練習テンプレート
最後に、今日の内容をまとめた練習用テンプレートを載せておきます。 このままコピーして、割引率や税率、コールバックの中身を変えながら試してみてください。
// day11-template.ts
// Day 11:関数の応用 テンプレート
// Optional / Default / Arrow / Callback を使った商品価格計算
type PriceCallback = (total: number) => void;
// 総合的な商品価格計算関数(通常の関数)
function calcTotalPrice(
price: number,
quantity: number,
discountRate?: number,
taxRate: number = 0.1
): number {
const subtotal = price * quantity;
let discounted = subtotal;
if (discountRate !== undefined) {
const discountAmount = subtotal * discountRate;
discounted = subtotal - discountAmount;
}
const tax = discounted * taxRate;
const total = discounted + tax;
return total;
}
// Arrow Function版
const calcTotalPriceArrow = (
price: number,
quantity: number,
discountRate?: number,
taxRate: number = 0.1
): number => {
const subtotal = price * quantity;
let discounted = subtotal;
if (discountRate !== undefined) {
const discountAmount = subtotal * discountRate;
discounted = subtotal - discountAmount;
}
const tax = discounted * taxRate;
const total = discounted + tax;
return total;
};
// Callbackを使う版
function calcTotalPriceWithCallback(
price: number,
quantity: number,
discountRate: number | undefined,
taxRate: number,
callback: PriceCallback
): void {
const subtotal = price * quantity;
let discounted = subtotal;
if (discountRate !== undefined) {
const discountAmount = subtotal * discountRate;
discounted = subtotal - discountAmount;
}
const tax = discounted * taxRate;
const total = discounted + tax;
callback(total);
}
// テスト用コールバック
const printTotal = (total: number): void => {
console.log("計算結果:", total);
};
// テスト実行
console.log("=== Day 11 テスト ===");
console.log("ケース1(割引なし・税10%):", calcTotalPrice(1000, 3));
console.log("ケース2(10%割引・税10%):", calcTotalPrice(1000, 3, 0.1));
console.log("ケース3(5%割引・税8%):", calcTotalPrice(2000, 2, 0.05, 0.08));
console.log("Arrow版 ケース1:", calcTotalPriceArrow(1500, 2));
calcTotalPriceWithCallback(1000, 3, 0.1, 0.1, printTotal);
TypeScriptDay 11のまとめ
Day 11では、
- Optional Parameterで「あってもなくてもいい引数」を扱う方法
- Default Parameterで「渡されなかったときの標準値」を設定する方法
- Rest Parameterで「可変長の引数」をまとめて受け取る方法
- Arrow Functionで、関数を短く・柔らかく書く記法
- Callbackで、「関数を引数として渡し、処理の一部を外から差し込む」考え方
- 商品価格計算という現実的な題材を通して、これらを組み合わせる練習
を一通り体験しました。
今日のコードは、ぜひ割引率や税率、数量を変えたり、コールバックの中でログを取ったりアラートを出したりしながら、「関数の応用テクニックがどんな場面で効いてくるか」を自分の感覚で確かめてみてください。 関数が柔軟に設計できるようになると、プログラム全体がぐっと“賢く”動き始めます。
Day 11:関数の応用を「手になじませる」練習
Day 11のテーマは、関数の応用です。 今日のキーワードは次の5つです。
- Optional Parameter(オプショナル引数)
- Default Parameter(デフォルト値付き引数)
- Rest Parameter(可変長引数)
- Arrow Function(アロー関数)
- Callback Function(コールバック関数)
ここでは、それぞれを小さな例題→少し深掘り→テンプレートという流れで、初心者の方でもスッと読める形で解説していきます。
Optional Parameter:あってもなくてもいい引数
Optional Parameterの基本
Optional Parameterは、「引数があってもなくてもいい」という意味の引数です。 TypeScriptでは、引数名の後ろに ? を付けて表現します。
// Optional Parameter を使った挨拶関数
function greet(name: string, title?: string): string {
// title が渡されているかどうかでメッセージを変える
if (title) {
return `${title}の${name}さん、こんにちは`;
} else {
return `${name}さん、こんにちは`;
}
}
console.log(greet("Taro")); // Taroさん、こんにちは
console.log(greet("Hanako", "先生")); // 先生のHanakoさん、こんにちは
TypeScript重要ポイント:
title?: stringが Optional Parameterです。- 呼び出し側は、
greet("Taro")のように省略してもOKです。 - 「状況によって渡したり渡さなかったりする情報」を扱うときに便利です。
Default Parameter:渡されなかったときの「標準値」
Default Parameterの基本
Default Parameterは、「引数が渡されなかったときに使う標準値」をあらかじめ決めておく仕組みです。
// Default Parameter を使った挨拶関数
function greetWithDefault(name: string, suffix: string = "さん"): string {
// suffix が渡されなければ "さん" が使われる
return `${name}${suffix}、こんにちは`;
}
console.log(greetWithDefault("Taro")); // Taroさん、こんにちは
console.log(greetWithDefault("Hanako", "先生")); // Hanako先生、こんにちは
TypeScript重要ポイント:
suffix: string = "さん"のように、=で初期値を指定します。- 呼び出し側が値を渡さなかった場合、その初期値が使われます。
- 「ほとんどの場合はこの値でOK、たまに変えたい」というときにとても自然な書き方になります。
Rest Parameter:可変長引数で「いくつでもどうぞ」
Rest Parameterの基本
Rest Parameterは、「いくつ渡されるかわからない引数を、配列としてまとめて受け取る」ための仕組みです。 ... を使って表現します。
// 可変長引数で合計を計算する関数
function sumAll(...numbers: number[]): number {
let sum = 0;
// numbers は配列として扱える
for (const n of numbers) {
sum += n;
}
return sum;
}
console.log(sumAll(1, 2, 3)); // 6
console.log(sumAll(10, 20, 30, 40)); // 100
TypeScript重要ポイント:
...numbers: number[]が Rest Parameterです。- 呼び出し側は、
sumAll(1, 2, 3)のように、好きな数だけ引数を渡せます。 - 「複数の値をまとめて処理したいけれど、個数が決まっていない」というときに役立ちます。
Arrow Function:短く書ける関数の記法
Arrow Functionの基本形
Arrow Functionは、関数を短く書くための記法です。 (引数) => { 処理 } という形で書きます。
// 通常の関数
function double(n: number): number {
return n * 2;
}
// Arrow Function版
const doubleArrow = (n: number): number => {
return n * 2;
};
console.log(double(5)); // 10
console.log(doubleArrow(5)); // 10
TypeScriptさらに、1行で書ける場合は return と波括弧を省略できます。
const doubleShort = (n: number): number => n * 2;
console.log(doubleShort(5)); // 10
TypeScript重要ポイント:
- Arrow Functionは、
mapやfilterなどの配列メソッドと相性がよく、よく使われます。 - 「短く書けるけれど、型はしっかり付ける」というスタイルがTypeScriptらしい書き方です。
Callback Function:関数を「引数として渡す」
Callbackの基本イメージ
Callback Functionは、「関数を引数として渡す」という考え方です。 「処理の一部を、呼び出し側に任せる」イメージです。
// callback を受け取る関数
function runTwice(callback: () => void): void {
// callback を 2 回呼び出す
callback();
callback();
}
// 実際に渡す関数(Arrow Function)
const sayHello = (): void => {
console.log("こんにちは");
};
runTwice(sayHello);
// こんにちは
// こんにちは
TypeScript重要ポイント:
callback: () => voidは、「引数なし・戻り値なしの関数」を受け取るという意味です。- 呼び出し側は、
runTwice(sayHello)のように関数を渡します。 - 「処理の中で、特定のタイミングで呼び出したい処理を外から差し込む」というときに使われます。
練習1:デフォルト値付き関数を作る
ここからは、課題に沿って実際に関数を作っていきます。
デフォルト値付き関数の例:送料計算
// 商品価格と送料を合計する関数(送料にデフォルト値を設定)
function calcTotalWithShipping(price: number, shipping: number = 500): number {
// shipping が渡されなければ 500 が使われる
return price + shipping;
}
console.log("送料デフォルト:", calcTotalWithShipping(2000)); // 2500
console.log("送料指定:", calcTotalWithShipping(2000, 800)); // 2800
TypeScriptshipping: number = 500が Default Parameterです。- 「だいたい500円だけど、場合によって変えたい」という現実的なパターンを表現しています。
練習2:可変長引数で合計・平均を計算する
合計を計算する関数(Rest Parameter)
// 可変長引数で合計を計算
function sum(...values: number[]): number {
let total = 0;
for (const v of values) {
total += v;
}
return total;
}
console.log("sum(1, 2, 3):", sum(1, 2, 3)); // 6
console.log("sum(10, 20, 30, 40):", sum(10, 20, 30, 40)); // 100
TypeScript平均を計算する関数(Rest Parameter)
// 可変長引数で平均を計算
function average(...values: number[]): number {
if (values.length === 0) {
console.log("エラー: 値がありません");
return NaN;
}
const total = sum(...values); // さきほどの sum 関数を再利用
return total / values.length;
}
console.log("average(10, 20, 30):", average(10, 20, 30)); // 20
TypeScript- Rest Parameterで受け取った値を、配列として扱っています。
- 既存の関数
sumを再利用することで、「関数を組み合わせる」感覚も育ちます。
練習3:Arrow Functionで書く「短い関数」
文字列をトリムする関数
// 前後の空白を削除する Arrow Function
const trimText = (text: string): string => text.trim();
console.log(trimText(" hello ")); // "hello"
TypeScript数値を2倍にする関数
const doubleValue = (n: number): number => n * 2;
console.log(doubleValue(7)); // 14
TypeScript- Arrow Functionは、短い処理をサッと書きたいときに向いています。
- 型をしっかり付けておくことで、読みやすさと安全性を両立できます。
練習4:Callback Functionで「後処理」を差し込む
計算結果をコールバックで受け取る関数
// 計算結果を受け取るコールバックの型
type ResultCallback = (result: number) => void;
// 2つの数値を足して、結果をコールバックに渡す関数
function addWithCallback(a: number, b: number, callback: ResultCallback): void {
const result = a + b;
// 計算結果をコールバックに渡す
callback(result);
}
// 実際に使うコールバック(Arrow Function)
const printResult = (result: number): void => {
console.log("計算結果:", result);
};
// 実行
addWithCallback(10, 5, printResult); // 計算結果: 15
TypeScriptResultCallback型で、「結果を受け取って何かする関数」を表現しています。addWithCallbackは計算だけを担当し、「結果をどう扱うか」はコールバックに任せています。- こうした「役割分担」は、コードの再利用性やテストのしやすさを高めます。
Day 11 練習テンプレート
最後に、今日の内容をまとめた練習用テンプレートを載せておきます。 このままコピーして、値や処理内容を変えながら、自分なりの関数を増やしてみてください。
// day11-practice.ts
// Day 11:関数の応用 練習テンプレート
// 1. デフォルト値付き関数
function calcTotalWithShipping(price: number, shipping: number = 500): number {
return price + shipping;
}
// 2. 可変長引数で合計
function sum(...values: number[]): number {
let total = 0;
for (const v of values) {
total += v;
}
return total;
}
// 3. 可変長引数で平均
function average(...values: number[]): number {
if (values.length === 0) {
console.log("エラー: 値がありません");
return NaN;
}
const total = sum(...values);
return total / values.length;
}
// 4. Arrow Function(文字列トリム)
const trimText = (text: string): string => text.trim();
// 5. Arrow Function(2倍)
const doubleValue = (n: number): number => n * 2;
// 6. Callback 用の型
type ResultCallback = (result: number) => void;
// 7. Callback Function を使った足し算
function addWithCallback(a: number, b: number, callback: ResultCallback): void {
const result = a + b;
callback(result);
}
// 8. 実際に使うコールバック
const printResult = (result: number): void => {
console.log("計算結果:", result);
};
// テスト実行
console.log("=== Day 11 テスト ===");
console.log("送料デフォルト:", calcTotalWithShipping(2000));
console.log("送料指定:", calcTotalWithShipping(2000, 800));
console.log("sum(1, 2, 3):", sum(1, 2, 3));
console.log("average(10, 20, 30):", average(10, 20, 30));
console.log("trimText:", trimText(" hello "));
console.log("doubleValue:", doubleValue(7));
addWithCallback(10, 5, printResult);
TypeScriptDay 11のまとめ
Day 11では、
- Optional Parameterで「あってもなくてもいい引数」を扱う方法
- Default Parameterで「渡されなかったときの標準値」を設定する方法
- Rest Parameterで「可変長の引数」をまとめて受け取る方法
- Arrow Functionで、関数を短く・柔らかく書く記法
- Callback Functionで、「関数を引数として渡し、処理の一部を外から差し込む」考え方
を、具体的なコードとともに体験しました。
今日のコードは、ぜひ引数の値や処理内容を変えたり、関数を組み合わせたりしながら、「関数の応用テクニックがどんな場面で効いてくるか」を自分の感覚で確かめてみてください。 関数が柔軟に設計できるようになると、プログラム全体がぐっと書きやすく、そして楽しくなっていきます。
