Посмотрите на этот код:
import Moves.*
import ReverseMoves.*
interface Move {
val opp : Move
}
enum class Moves(override val opp: Move) : Move {
U(U_),
R(R_),
L(L_),
D(D_),
F(F_),
B(B_),
}
enum class ReverseMoves(override val opp: Move) : Move {
U_(U),
R_(R),
L_(L),
D_(D),
F_(F),
B_(B),
}
val cornerMapping: Map<Move, IntArray> = mutableMapOf(
U to intArrayOf(1, 2, 4, 3),
R to intArrayOf(2, 6, 8, 4),
L to intArrayOf(1, 3, 7, 5),
D to intArrayOf(7, 8, 6, 5),
F to intArrayOf(3, 4, 8, 7),
B to intArrayOf(2, 1, 5, 6)
)
fun f() {
for (m in cornerMapping) {
cornerMapping.set(m.key.opp, m.value.reversed().toIntArray())
}
}
При попытке скомпилировать этот код я получаю следующую ошибку:
t.kt:37:23: error: unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
@InlineOnly public inline operator fun <K, V> MutableMap<Move, IntArray>.set(key: Move, value: IntArray): Unit defined in kotlin.collections
@InlineOnly public inline operator fun kotlin.text.StringBuilder /* = java.lang.StringBuilder */.set(index: Int, value: Char): Unit defined in kotlin.text
cornerMapping.set(m.key.opp, m.value.reversed().toIntArray())
^
Я не понимаю, почему яПри получении этой ошибки типы ключа и значения, переданные в set
, точно совпадают с типами, объявленными для cornerMapping.