Kotlin 为 8 位模拟器创建一个 Word class

Kotlin creating a Word class for an 8-bit emulator

我正在寻求有关恢复 6502 模拟器的帮助,我在 Java 许多个月前写的,现在正在转换为 Kotlin。是的,有很多,但这是我的实现,所以我可以学习如何创建模拟器,现在学习如何使用 Kotlin。

我需要一个字 class 作为地址,即:

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

我无法扩展 Int,因此我假设我的 class 中有一个内部副本(如果有更好的方法,我很乐意听到)。

使用这个:

val address = Word()

很简单,我可以将它与很多 address.value += 123 一起使用以移动到另一个位置。除此之外,我可以添加函数来执行 Add、Inc、Dec 等。

但是,有没有办法修改 class,这样我就可以:

address += 123

直接?

我不确定这个方法是怎样的或者是什么?我宁愿不要有很多:

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

在我的模拟器中。

如有任何建议,我们将不胜感激。

与 Java 不同,Kotlin 允许运算符重载。

找到 documentation here

根据文档,您可以使用 operator 关键字来创建重载函数

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