2021-05-08から1日間の記事一覧

レシーバー付き関数リテラル

https://kotlinlang.org/docs/lambdas.html#function-literals-with-receiver 関数リテラル with receiver (レシーバー付き関数リテラル) レシーバー付き関数型: A.(B) -> C 型A(レシーバー)に対して、(B) -> C 型の関数リテラルを埋め込むことができる。 レ…

ラムダ式とクラスによる関数型の実装

ラムダ式の正体は関数型を実装したクラスである。 ラムダ式 val f: (Int) -> (Int) -> Unit = { i: Int -> { j: Int -> println(i + j) } } f(1)(5) // 6 f.invoke(1).invoke(5) // 6 invoke()メソッドを通じて関数をコールすることができる クラスによる関…

末尾再帰関数 tailrec

https://kotlinlang.org/docs/functions.html#tail-recursive-functions 末尾再帰関数の場合は、tailrec キーワードを付けることで、コンパイラが最適化し、高速化する。 val eps = 1E-10 // "good enough", could be 10^-15 tailrec fun findFixPoint(x: Do…

gradle run でコンソールから入力を受け付けるようにする

Console application with Java and gradle - Stack Overflow build.gradle.kts (Kotlin syntax) tasks.getByName<JavaExec>("run") { standardInput = System.`in` } もしくは、 build.gradle (Groovy syntax) run { standardInput = System.in }</javaexec>