Part24: 分解宣言

ことり「2枚取れたよ、穂乃果ちゃん」
凛「あっ、スクフェス復活したの?」
ことり「結構前だけどね。Nexus5X買ったんだ」
凛「あれ、Zenfone Goは?」
ことり「ゴミだったから会社寄付」
凛(ことりちゃん時々暴言吐くとほんと怖いにゃ~)
凛「で、どんな感じ?」
ことり「2年前のハイエンドXperiaより最新のミッドレンジNexusの方が高性能って、錯覚、していたわ・・・」
凛「そっかー、錯覚・・・」
ことり「それでは聴いてください。錯覚CROSSROADS」


ことり「さて、と。今回は分解宣言というのを見てみますね」
凛「分解宣言 yeah!yeah!yeah!」
ことり「分解宣言というのは、オブジェクトをいくつかの要素に分解したり、関数から複数の値を返したり、というときに使うものです」
凛「スルー・・・」
ことり「たとえば、var (name, age) = honokaってやるだけで、名前と年齢が取り出せたら便利だよね」
凛「まあ、確かにいちいちhonoka.nameとかするよりは楽そうだにゃ」
ことり「それを実現するのがこのコード」

Honoka Kosaka
16

ことり「オブジェクトの中身を簡単に取り出せるね。ポイントはcomponent1component2関数です」
凛「この1とか2って連番なのかな?だとしたら何となくわかるにゃ」
ことり「うん。var (name, age)nameにはcomponent1の結果が、ageにはcomponent2の結果が入ります。左から1、2、3、4・・・だよ」
凛「component3とかcomponent4って増やしていけばいいんだね」


ことり「じゃあ次に、関数から複数の値を返すことを考えてみよっか」
凛「引数は複数取れるのに戻り値が1つだけは不便だと思ってたにゃ」
ことり「関数ってそういうものなんだけどね・・・Kotlinの言語機能としては戻り値は1つしか返せないんだけど、データクラスを使うとうまくいきます」

ことり「Resultっていうデータクラスを用意して、getProperties関数はそれを返すようにしています。それをvar (name, age)に代入してあげれば、名前と年齢の2つを同時に返したことになるね」
凛「なんか狐につままれた気分だにゃ」
ことり「分解宣言を使ったトリックみたいな感じだからね」
凛「そういえばcomponentなんとかがでてこないけど」
ことり「データクラスはcomponentN関数を自動生成してくれるの。だから、普通のクラスの時みたいに自分で実装する必要はないんです」


ことり「次回はコレクションについて見ていきますね」
凛「配列とかリストとかだよね」
ことり「他の言語とはちょっと違うところがあるから、そのあたりのお話しです」


LINEで送る
Pocket


コメントを残す

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