LoginSignup
4
4

More than 5 years have passed since last update.

[ことクロ3] Kotlinで、クロージャ&Delegate(s)入門

Last updated at Posted at 2015-10-20

0) 序

思い立って、"Kotlinでスマートフォン・クロスプラットフォーム開発"に入門中。
(=> タイトルとしては、長くてノイジーな気がするので、以後、"ことクロ")。
現時点では、Kotlin向けAndroidStudio環境構築のみ。

目指せ、Kotlin on RoboVM@iOS。 cf.Jetbrain社roboVMブログ

まずは、情報がwebに限られるKotlinに急がば回れで、慣れるていく。本日は、同じJVM言語仲間であり、AndroidStudio等のビルドツールGradleの記述言語であるGroovyとの比較で、Kotlinのクロージャ&Delegateを入門。

1) クロージャ

クロージャの使いどころが気になる時は。

KotlinもGroovyもJavascriptも同じようなクロージャ。必要に応じ、クロージャ入門記事を参照しつつ、クロージャってどんなときに使うの?をちら見。
個人的には、①やっつけで機能豊富な(豊富すぎる)関数を作る場合か、②便利で自由度の高い関数を作る場合か、その他か、といった程度に理解。

Kotlin

今風の言語でクロージャが使えるのは当たり前、ということか、有志のプログラミング言語Kotlin 解説では、
"Kotlinではクロージャ(Closure)を扱えます。つまり、ローカル関数などが、その外側の関数内で宣言されている変数の値を読み書きすることができます。"と、そっけない。

Kotlinでは、関数にはふつうの関数fun x(){...}と、リテラル関数 val x={...}があって、若干意味が異なる。
IntelliJ EAP15を使って試してみると、両者とも問題なくクロージャが使えた(関数の外の変数nの値を変更できている)。
文字列の扱いも当然お手のものだね:

Groovy

Groovyは必要に応じ学ぶ方針なので、チラ見で済ませてしまう:
GroovyのClosureを使ってみる

はい、rubyっぽく書けるとのことですね。
 

2) Delegate(s)

KotlinとGroovyとで意味合いが違う..模様。

委託・委任するといった意味の動詞delegate。英語としてはビックワードの類で、プログラミングの世界では、実装依存になりがちなUIライブラリなどでよく使われるターム。

Kotlinでは、Classのプロパティを初期化したくない時(とりあえずの値としてnullを入れるのが嫌な時など)に、Delegated Proptertyが使われる。nullを許容するJavaの世界と、Nullを排除するKotlinの世界の間を、lazyなDelegated Proptertyがとりもつ感じなのだろう。
Groovyでは、クロージャのスコープ把握の制御などに、キーワードdelegateが用いられている。
参考 [Groovy]クロージャのthis、owner、delegateについて

Kotlin

声に出して読みたいKotlinの後半を見るにいろいろな、Delegatesパターンがあるらしい。詳しくは後にKotlinでJavaのUIライブラリいじるときに探ることとする。

とりあえず、形名 by Delegates.notNullというパターンを実行してみる。このあたりの表現の補完はIDE便利

Groovy

クロージャの中では、暗黙的に使用できる変数delegateがある。GradleでのDSLにも使われている。build.gradleをがりがり書く場合には理解しておくべきなのだろう。

参考 "Groovyを知らない人のためのbuild.gradle読み書き入門"のこの部分

そして、RxJava/RxAndroidでFRPなどの話になってくると、Groovyのdelegate入りクロージャがより重要になってくるんでしょうね。

参考 GroovyOnAndroidやRxJavaをやりたい人のための、Groovyのクロージャの書き方・使い方メモ

所感。と、Kotlin本!

AndroidStudio使う関係で、Groovyとの対比でKotlinを調べたが、やはり、言語としての歴史があるGroovyに比べ、Kotlin情報は少なめ。。Kotlin本はないわけだし・・・と思っていたところ、先行公開版(MEAP)として、"Kotlin in Action"が既に4章まで、出ていることを発見!・・11章が、"KOTLIN FOR ANDROID"。

まずは、"Kotlin in Action"の1章を読んでみる。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4