前提・実現したいこと
配列をsortedByを使用してソートしようとしています。
ソートの条件を切り替えたいのですがsortedByでエラーで出てしまいます。
並べ替えたい値の型が違うことが問題だと思うのですが
どの様にすればエラーを無くすことができるでしょうか。
よろしくおねがいします。
発生している問題・エラーメッセージ
kotlin
1button.setOnClickListener { 2 3 val list = listOf("aaa", "b", "cccc", "d") 4 5 var sort: (String) -> Comparable<*>? 6 7 // なんらかの条件により 8 if (true) { 9 // 文字列長(Int)で並べ替えたい場合と 10 sort = { s -> s.length } 11 } else { 12 // 文字列(String)で並べ替えたい場合がある 13 sort = { s -> s } 14 } 15 16 // sortedBy でコンパイルエラー 17 val result = list.sortedBy { sort(it) } 18 19 result.forEach { Log.d("TAG", it) } 20}
エラー内容
Type parameter bound for R in inline fun <T, R : Comparable<R>> Iterable<T>.sortedBy(crossinline selector: (T) → R?): List<T> is not satisfied: inferred type Comparable<*> is not a subtype of Comparable<Comparable<*>>
補足情報(FW/ツールのバージョンなど)
kotlin_version = "1.3.72"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 13:04