Part9: 関数

凛「終わったにゃーーーーーーーーっ!!」
ことり「Final LoveLive! μ’sic forever♪♪♪♪♪♪♪♪♪、いかがでしたか?」
凛「スノハレの落サビのオレンジは毎回感涙ものにゃ・・・ぐすっ」
ことり「誰かがドームだけで500万円相当のUOがあの瞬間に折られたって計算してたね」
凛「そんな冷静な計算求めてないよ・・・」

ことり「ことりは2日ともLVだったけど、3日目のスペシャルビューイングも含めてとても盛り上がりました♪」
凛「・・・ことりちゃん、凛たち2日ともドームで踊ってたよね?ことりちゃん自己紹介から泣いてたよね?」
ことり「・・・・・・(・8・)」

ことり「ここでのことりたちの活動はまだまだ続きます。安心してくださいね♪」
凛「すーぱーらぶ!すーぱーらいぶ!色の変え方やっと覚えたにゃ!次回のライブはばっちりにゃ!」
ことり「凛ちゃん、それはあきらめよう?ね?」


ことり「さて今回は、関数について見てみますね。関数とクラスはKotlinのとても重要な要素です」

ことり「関数っていうのは・・・まあ、凛ちゃんは知ってるよね?」
凛「えへん、これでも関数型言語をやってたにゃ!」
ことり「Elixirはそうだったね。じゃあ軽く流しちゃうけど、何かの入力(引数)を受け取ってそれに応じた出力(戻り値)を返す仕組みのことです」

ことり「実は今までにも関数は出てきたんだけど、まず基本的な書き方からいきますね」

ことうみ
うみ

ことり「umi関数は引数nameがことりのときだけことうみになります」
凛「ことりちゃん・・・久々に病んでるにゃ」
ことり「海未ちゃんに近付く悪い虫は、ことりが駆除しちゃいますよ♪」
凛「血のついた包丁を持って笑顔で佇むことりちゃんの図・・・」

ことり「関数の呼び出しは、var ret = func(param1, param2, ...)の形になります」
凛「えっと、umi("こと")だと"こと"が引数で、戻り値は変数に入れずにprintlnで出力してるんだね」

ことり「関数定義の方では、引数には型が必要です。さっきの例では、String以外の型の値は渡せないよ」
凛「代入と同じだにゃ」


デフォルト引数

ことり「引数にはあらかじめデフォルト値を決めておいて、渡されなかったらその値を使う、ということができます」

ほのことうみ
ほのことぱな
にこりんぱな

凛「デフォルト値があっても、渡した引数の方が優先されるんだね」


名前付き引数

ことり「関数を呼び出すときは、引数の名前を指定して値を渡すことができます」

ほのことぱな

ことり「デフォルト値が決まった引数の、どれか狙ったのに値を渡したい場合に便利です」
凛「名前付き引数使わないと、trio("こと", "ぱな")にしないといけないんだよね」


Unit

ことり「ここまでは、関数は戻り値の型を宣言してreturnで値を返してたけど、値を返す必要がない関数もあります。printlnで出力するだけとかね」
凛「そういえば、戻り値いらなくてもreturn書かないとコンパイル通らなかったにゃ」
ことり「そういう場合はUnitで」

凛「・・・書き手の趣味が丸分かりで痛々しいにゃ・・・」
ことり「・・・えーっと、戻り値の型をUnitにすると、returnで値を返す必要がなくなります。まあvoidだね」


単一式関数

ことり「簡単な関数なら、1行で書ける記法が用意されています」

ほのほの

ことり「関数本体を{}のブロックの中に書いていたのを、1行なら=の後に書けるんです」
凛「小さい関数たくさん作るときに便利そうだにゃ」


可変長引数

ことり「デフォルト引数とかで一部省略はできたけど、基本的に引数の数はずっと固定でした。けど、完全に数を可変にする方法があります」

ほの
こと
ぱな

ことり「こうやって引数にvarargを付けると、引数membersは呼び出し元で渡した引数が入ったString型のリストとして扱えます」
凛「これ、arrayOfみたいなの?」
ことり「そうそう。まさにあれは、可変長引数を使って実装されてるよ」


ことり「関数の基本的な使い方はこんな感じだけど、次回からはもう少し応用的なことをやってみます」
凛「Elixirで鍛えた凛に死角はないにゃ」
ことり「じゃ、次回はラムダ式ね」
凛「・・・なんだっけ?」
ことり「・・・」


LINEで送る
Pocket


返信を残す

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