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 允许运算符重载。
根据文档,您可以使用 operator 关键字来创建重载函数
data class Counter(val dayIndex: Int) {
operator fun plus(increment: Int): Counter {
return Counter(dayIndex + increment)
}
}
我正在寻求有关恢复 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 允许运算符重载。
根据文档,您可以使用 operator 关键字来创建重载函数
data class Counter(val dayIndex: Int) {
operator fun plus(increment: Int): Counter {
return Counter(dayIndex + increment)
}
}