20:30:52 @tateisu@mastodon.juggler.jp
icon

しかし根本的なとこでいうと、マウスやキーボードで操作するアプリではないなー

16:32:01 @tateisu@mastodon.juggler.jp
icon

kotlinでnull安全が提供されたのは良いが、次は文字列のempty安全が欲しいと思うのは間違っているだろうか

02:24:29 @tateisu@mastodon.juggler.jp
icon

kotlinでインライン関数に渡したラムダ式からの非局所リターン、使えない状況で記述するとコンパイルエラーになるのだった。これならまあ自分の足は撃たなくてすむと思う

02:01:21 @tateisu@mastodon.juggler.jp
kotlinのラムダ、SAM、オブジェクト式、メンバ参照
icon

コードを別の関数に渡したり受け取ったりする方法を表にしてみた。4種類もあると混乱する mastodon.juggler.jp/media/ljE7

Attach image
00:00:33 @tateisu@mastodon.juggler.jp
kotlinで==や===演算子をプリミティブ型に使うと
icon

コードを書いて試した後app/build/tmp/kotlin-classes/ にできるファイルをjavapで逆アセして確認
==演算子:int10==long10と書くとエラー。int10.equals(long10)はfalse。逆アセ見るとvalueOfでboxing して Integer.equalsだった
まず型を揃えないと数値比較はできないようだ。暗黙の昇格はないぽい。 そういえばcharとintの比較演算も毎回.toChar() や.toInt() を書く必要がある

===演算子:int10===long10と書くとエラー。int10===int10bはdeprecated警告が出て結果はtrue。逆アセ見ると if_icmpne で数値を比較していた。as Anyしてから比較するとvalueOfでboxing してif_acmpneでアドレス比較。
valueOfは-128..127の範囲は内部でキャッシュを行うので、数値が同じでもtrue/falseは変わる