Avatar
omochimetaru 4/5/2021 7:19 AM
個人的には、ブロックの値とreturnの値の共存問題が大きいと思っていて
7:19 AM
Kotlinはそれを受け入れているんだけど、
7:19 AM
Kotlinはそれを突き進めてユーザー定義高階関数もその ブロックの値とreturnの両方を使えるようにするために
7:20 AM
inline funって概念を導入してるんだよね
7:20 AM
確かにうまく使えば便利ではあるんだけど、 高階関数側がパラメータのクロージャをどう呼び出すか、っていう振る舞いが、型に現れない暗黙のAPIになるので
7:21 AM
returnしたときにどういう形で中断されるのかとかが難しいのと
7:21 AM
実際にクロージャだけを脱出したい場合に備えて、ラベルつきreturnを使ったり
7:21 AM
ブロック文法ではない匿名fun式を使い分けたりする必要があって
7:21 AM
そのへんで言語仕様がすごい複雑になっちゃってて、
7:22 AM
シンプルではないんだよね、個人的にはあまり美しくない方向だと思ってる。