Copyrights(c) Henry, Inc. All rights reserved. 自己紹介 Kengo TODA (@kengo_toda) 株式会社ヘンリー SRE Java界では静的解析ツールSpotBugsの中の人、 または@actions/setup-java に依存キャッシュ機能を入 れた人として知られているといいなぁ 2
Copyrights(c) Henry, Inc. All rights reserved. Passing trailing lambdas // 最後の引数が関数型の場合、ラムダをカッコの外に書いても良い val product = items.fold(1) { acc, e -> acc * e } // 引数が関数型のものひとつしか無いなら、カッコも省略できる run { println("...") } 15
Copyrights(c) Henry, Inc. All rights reserved. ジェネリクス(1) Javaとだいたい同じだけどより優しい interface Source { fun nextT(): T } fun demo(strs: Source) { val objects: Source = strs // This is OK, since T is an out-parameter } 17
Copyrights(c) Henry, Inc. All rights reserved. byによる委譲(1) // gradle.properties から値を取り出す val fooVersion: String by settings // byによってプロパティの取得をSettingsインスタンスに委譲している。このインス タンスにはgradle.propertiesに書かれた設定がreadonlyのプロパティとして設定 されている。 // // つまり以下と同じ動作となる。変数名が重複している点に注目。 val fooVersion: String = settings.fooVersion 22
Copyrights(c) Henry, Inc. All rights reserved. byによる委譲(3) // つまりこの書き方は、 val barTask by tasks.creating(Bar::class) {} // この書き方と同じ。変数名が重複している点に注目。 val barTask = tasks.create("barTask", Bar::class) {} 24