普段と違う

7月11日木曜日、小雨

客先に出向くために、シャツに綿パン革靴と、ふだんは決してしない格好で出社。

* * *

Android Studio(そしてその元となる IntelliJ IDEA)に scratch file という機能があることを知った。
emacs の *scratch* バッファーみたいなもので、ここにコードの断片を書いて実行して結果を見ることができる。いわゆる REPL。

* * *

Kotlin の(コレクションにつく) map 関数は suspend 関数を取れないのだけれど、ブロックで渡したときには解釈してくれるよう。つまり

list.map { value -> suspendFun(value) }

というコードはコンパイルされるし、動く。これを

val f: suspend (T) -> R = { value -> suspendFun(value) }
list.map(f)

のように書くと(構文的解釈はまったく同じはずなのに)アウト。

しかしコンパイルが通るといい条、動作は次のような感じになるようで、だからせっかくの非同期関数の長所がまったく活かされない。

val f: (T) -> R = { value -> runBlocking { suspendFun(value) } }
list.map(f)


この記事が気に入ったらサポートをしてみませんか?