Kotlin создание класса Word для 8-битного эмулятора - PullRequest
0 голосов
/ 21 января 2020

Я ищу помощь в воскрешении эмулятора 6502, который я написал в Java много лун go и теперь преобразую в Kotlin. Да, есть много, но это моя реализация, поэтому я мог научиться создавать эмуляторы и теперь, как использовать Kotlin.

Мне нужен класс Word для адресов, то есть:

class Word(initValue: Int = 0x0000) {
    var value = initValue
        get() = field
        set(newValue) {
            field = newValue and 0xFFFF
        }
}

Я не могу расширить Int, поэтому я предполагаю, что у меня есть внутренняя копия в моем классе (если есть лучший способ, я хотел бы услышать это).

Использование этого:

val address = Word()

Тривиально, и я могу использовать его с большим количеством address.value += 123 для перемещения в другое место. В дополнение к этому, я могу добавить функции для выполнения Add, In c, De c et c.

Однако есть ли способ изменить класс, чтобы я мог:

address += 123

Непосредственно?

Я не уверен, как или каков подход к этому? Я бы предпочел, чтобы в моем эмуляторе не было:

address.add(123)    or       address.value += 123

.

Любой совет будет очень признателен.

1 Ответ

1 голос
/ 21 января 2020

В отличие от Java, Kotlin допускает перегрузку оператора.

Найдите документацию здесь

Из документации вы можете использовать ключевое слово оператора для создания перегруженной функции

data class Counter(val dayIndex: Int) {
    operator fun plus(increment: Int): Counter {
        return Counter(dayIndex + increment)
    }
}
...