如何在Kotlin类中为以后使用的映射分配值?



我想在Kotlin中创建一个可以任意更新和引用的类中的键值对映射。我读到一个MutableMap可能是我需要的,因为我可以在任何时候更新。在Typescript中,我的代码如下所示。我如何在Kotlin中编写类似的东西?

type Callback = (id: string) => void | null;
interface DataMap {
streetNumber: number | null;
streetName: string | null;
callback: Callback | null;
}
const dataMap: DataMap = {
streetNumber: null,
streetName: null,
callback: null,
}
// do something later..
const doSomething = (streetName: string, callback: Callback): void => {
dataMap.streetName = streetName;
dataMap.callback = callback;
}
// and then..
const printData = (): void => {
console.log(dataMap.streetName) // streetName is printed
}

如果键本身是动态的(属性的名称),则只需要映射。如果在TS中你有一个带有特定属性名的接口,你可以在Kotlin中做同样的事情。

在Kotlin中,类似的代码可以是:

typealias Callback = (id: String) -> Unit?
data class DataMap(
var streetNumber: Int?,
var streetName: String?,
var callback: Callback?,
)
val dataMap = DataMap(
streetNumber = null,
streetName = null,
callback = null,
)
// do something later..
fun doSomething(streetName: String, callback: Callback) {
dataMap.streetName = streetName
dataMap.callback = callback
}
// and then..
fun printData() {
println(dataMap.streetName) // streetName is printed
}

尽管我们通常会避免使用全局变量。

最新更新