如何为Map赋值以供以后在Kotlin类中使用?

huus2vyu  于 2022-12-13  发布在  Kotlin
关注(0)|答案(1)|浏览(263)

我想在Kotlin中创建一个键值对的Map,它可以被任意更新和引用。我读到过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
}
axr492tv

axr492tv1#

如果键本身是动态的(属性的名称),你只需要一个Map。如果在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
}

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

相关问题