普段と違う
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)
この記事が気に入ったらサポートをしてみませんか?