Part12:関数

絵里「今回は関数についてね」
真姫「関数って何、から始めると結構深遠なテーマよね」
絵里「厳密な話は一旦置いて、とりあえず関数を扱えるところを目指すわ」

絵里「このあたりが基本形かしら」
真姫「ことうみの是非はさておいてね」

絵里「関数joinは、m1とm2という2つの値を受け取ります。これを仮引数と呼ぶわ」
絵里「で、引数で受け取った2つの文字列を結合して、returnで呼び出し元に返してあげてる」
絵里「呼び出し側では、joinに2つの値を渡すことで、その結果を受け取れるの。ここで渡すのが実引数」
真姫「join('にこ', 'まき')するとjoinの中で'にこ' + 'まき'が評価されて、結果は’にこまき’になるのよね」

にこ「関数を使う理由って何かしら」
絵里「高度な使い方を考え始めると難しくなるけど・・・類似した処理を行うコードの再利用、コードのまとまりに名前を付ける、といったところが基本かしら。再帰とかラムダ計算はまたそのうちね」
真姫「例えば?」
絵里「あるひとまとまりのデータを、扱いやすいように何かのデータ構造に詰めておく、なんていうのはよくあるパターンだけど、それをやるのに・・・」

絵里「後者の方が見通しがいいしメンテナンスも楽よね」
真姫「これだと、人が増えても1行で済むのね」
にこ「・・・お願いだから、71はやめてほしいにこ」

絵里「関数の戻り値は複数返すことができるの」

真姫「リストで戻ってくるのね」
にこ「そろそろ泣くわよ・・・」

絵里「引数はデフォルト値を決めておけるの。指定されなければその値が使われるわ」

絵里「b=74は、引数の名前を指定して値を渡しているところね。こうやって必要な引数だけに値を渡すことができるの」
にこ「もうやめて!にこのライフはもう0よ!」

絵里「引数を渡すときにリストを使うこともできるわ」

絵里「リストの先頭に*を付けると引数に展開されるわ」
にこ「・・・」
真姫「あ、黙った」

絵里「今回の内容で、関数は一通り扱えるはずよ。大事な概念だから、かしこく、かわいく、使いこなしてね♪」
真姫「関数ってかわいいものなの・・・?」
絵里「まあ世の中には、モナドかわいいよモナドとか言いながらハァハァしてる人もいるから・・・」
真姫「病気よね」


LINEで送る
Pocket


2件のコメント

  1. 楽しく読ませて頂いています。

    多値戻り値の受け取り方はどうなるのでしょうか?
    一度一時変数に受け取ってスライスで分解?
    それとも
    a, b = hoge()
    みたいに書けるのでしょうか?

    1. コメントありがとうございます。こんな感じですね。

      アンパック代入といって、コレクションをそれっぽく分解して代入ができるのでお手軽です。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です