6 章 : 関数(誕生日のお祝い)
これまで、list
, +
, *
, -
, /
, quote
などを使った式の書き方を学んできました。
今日は、独自の操作を定義する方法を学びます。
操作には 2 種類あります。
- 関数
- マクロ
この章では、関数を学びます。
なぜ関数が必要なのでしょうか?
例えば、あなたの年れいが何才なのかを日数で表すとします。簡単でしょう?あなたの年れいを年単位で計算し、それに 1 年の日数である 365 をかければいいのです。
あなたが 9 才なら、あなたの年れいは日数で言うと次のようになります。
(* 9 365)
そして、家に 1 才半の赤ちゃんがいる場合、その子が生きている日数は次の通りです。
(* 1.5 365)
この (* x 365)
のようなものを毎回書くのはかなり面倒です。だから関数が必要なのです。
関数というのは、何にでも使える計算式のようなものです。
今回の計算では、年数 × 365
という計算式になります。
関数を定義する方法は?
ここでは、何日生きてきたかを計算のための関数を定義します。
#(* % 365)
関数の定義は次の 3 つでできています。
- ハッシュタグ(
#
)を前につける - 式の挿入
- 式の中で、関数の引数として
%
を使う
注意:
#
と式の間には、空白を入れないでください。
式の場合と同じように、 def
を使って関数に名前をつけることができます。
(def age-in-days #(* % 365))
そして、その関数はどんな数にでも使うことができます。
(age-in-days 9)
(age-in-days 1.5)
また、関数の名前を使わないことも可能です。これを無名(むめい)関数とよびます。
(#(* % 365) 12)
上のコードスニペットで何が起こっているのか、理解できましたか?
練習問題
A. 時間を分にかえる関数 hours->minutes
を書いてください。
()
B. hours->minutes
を使い、12 時間に何分あるのかを計算してください。
()
C. 名前を使わずに、A で定義した関数を 12
に使ってください。
()
D. 分を時間にかえる関数 minutes->hours
を作成します。
()
E. minutes->hours
を使って、6000 分間に何時間あるか計算します。
()
F. E で定義した関数を 6000
に使ってください(関数名は使用しないでください)。
()
Send us a screenshot with your programs to viebel@gmail.com.