![]() | Kotlinスタートブック -新しいAndroidプログラミング 新品価格 |

KotlinでMutableSetに対して
Java的に考えるとaddの関数でリストに追加するかと思いきや
+でも追加できることがわかったので
なんで動くか調べて見た
・コード
val _targets: MutableSet<String> = mutableSetOf()
_targets.add(target) //これが正しいかと思いきや
_targets += target //こうもかける
・調べて見た
cmd+マウスクリックしたら
以下が出てきた
@kotlin.internal.InlineOnly
public inline operator fun <T> MutableCollection<in T>.plusAssign(element: T) {
this.add(element)
}
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/plus-assign.html
・コードの意味を調べて見た
InlineOnly
Kotlinのprivate methodらしい
https://stackoverflow.com/questions/45763075/what-is-the-inlineonly-annotation
拡張関数だとfunの後ろにジェネリックを作れる
http://taro.hatenablog.jp/entry/20120127/1327652146
in T
反変 Tのsuper class
val _targets: MutableSet
val target:String = "a"
_targets.add(target)
にしても動く
http://kotlin.hatenablog.jp/entry/2012/12/17/234300
KotlinはJavaより便利になってるんで
色々覚えることがありそうですね
まだまだ続くよ
タグ:Kotlin