Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何初始化';可变地图';来自kotlin中数据类的构造函数?_Kotlin_Data Class - Fatal编程技术网

如何初始化';可变地图';来自kotlin中数据类的构造函数?

如何初始化';可变地图';来自kotlin中数据类的构造函数?,kotlin,data-class,Kotlin,Data Class,我有一个数据类,它有一个构造函数如下(): 你能给我: [A, B, C] 我想进一步修改我的数据类,如下所示: data class MyDataClass ( val myArr: ArrayList<Char>, val myMap: MutableMap<Char, MutableMap<String, String>> ) { constructor(n: Int): this( Array

我有一个
数据类
,它有一个
构造函数
如下():

你能给我:

[A, B, C]
我想进一步修改我的
数据类
,如下所示:

data class MyDataClass (
    val myArr: ArrayList<Char>,
    val myMap: MutableMap<Char, MutableMap<String, String>>
) {
    constructor(n: Int): 
    this(
            ArrayList((0 until n).map { ('A' + it).toChar() }),
            mutableMapOf()
        )
}
data class Thingamajigg(val n: Int) {
    val myArr: ArrayList<Char> = arrayListOf()
    val myMap: MutableMap<Char, MutableMap<String, String>> = mutableMapOf()

    init {
        (0..n).forEach { myArr.add('A' + it) }
        myArr.forEach { myMap[it] = mutableMapOf() }
    }
}
我得到:

{}
现在,我想要的不是为
myMap
获取一个空的
MutableMap
,而是一个
MutableMap
,如下所示:

data class MyDataClass (
    val myArr: ArrayList<Char>,
    val myMap: MutableMap<Char, MutableMap<String, String>>
) {
    constructor(n: Int): 
    this(
            ArrayList((0 until n).map { ('A' + it).toChar() }),
            mutableMapOf()
        )
}
data class Thingamajigg(val n: Int) {
    val myArr: ArrayList<Char> = arrayListOf()
    val myMap: MutableMap<Char, MutableMap<String, String>> = mutableMapOf()

    init {
        (0..n).forEach { myArr.add('A' + it) }
        myArr.forEach { myMap[it] = mutableMapOf() }
    }
}

我该怎么做?

您可以执行以下操作之一:

  • 将init逻辑提取到伴随函数中:
  • 数据类MyDataClass(
    val myArr:ArrayList,
    val myMap:MutableMap
    ) {
    构造函数(n:Int):这个(
    ArrayList(foo(n)),
    foo(n).map{it to mutableMapOf()}.toMap().toMutableMap()
    )
    伴星{
    fun-foo(n:Int)=(0到n.map{('A'+it)}
    }
    }
    
  • 添加中间构造函数
  • 数据类MyDataClass(
    val myArr:ArrayList,
    val myMap:MutableMap
    ) {
    构造函数(n:Int):这个(ArrayList((0到n).map{('A'+it)}))
    构造函数(列表:ArrayList):此(
    列表
    list.map{it to mutableMapOf()}.toMap().toMutableMap()
    )
    }
    
    您可以执行以下操作之一:

  • 将init逻辑提取到伴随函数中:
  • 数据类MyDataClass(
    val myArr:ArrayList,
    val myMap:MutableMap
    ) {
    构造函数(n:Int):这个(
    ArrayList(foo(n)),
    foo(n).map{it to mutableMapOf()}.toMap().toMutableMap()
    )
    伴星{
    fun-foo(n:Int)=(0到n.map{('A'+it)}
    }
    }
    
  • 添加中间构造函数
  • 数据类MyDataClass(
    val myArr:ArrayList,
    val myMap:MutableMap
    ) {
    构造函数(n:Int):这个(ArrayList((0到n).map{('A'+it)}))
    构造函数(列表:ArrayList):此(
    列表
    list.map{it to mutableMapOf()}.toMap().toMutableMap()
    )
    }
    
    我不确定我是否完全理解选择构造函数参数背后的原因,但我想说的是,您只需要一个构造函数,因为所有内容都是从显式构造函数中的
    int
    参数构建的。从这里开始,我将简化代码,如下所示:

    data class MyDataClass (
        val myArr: ArrayList<Char>,
        val myMap: MutableMap<Char, MutableMap<String, String>>
    ) {
        constructor(n: Int): 
        this(
                ArrayList((0 until n).map { ('A' + it).toChar() }),
                mutableMapOf()
            )
    }
    
    data class Thingamajigg(val n: Int) {
        val myArr: ArrayList<Char> = arrayListOf()
        val myMap: MutableMap<Char, MutableMap<String, String>> = mutableMapOf()
    
        init {
            (0..n).forEach { myArr.add('A' + it) }
            myArr.forEach { myMap[it] = mutableMapOf() }
        }
    }
    
    数据类Thingamajigg(val n:Int){
    val myArr:ArrayList=arrayListOf()
    val myMap:MutableMap=mutableMapOf()
    初始化{
    (0..n).forEach{myArr.add('A'+it)}
    myArr.forEach{myMap[it]=mutableMapOf()}
    }
    }
    

    这是否符合您的需要?

    我不确定我是否完全理解选择构造函数参数背后的原因,但我想说您只需要一个构造函数,因为所有内容都是从显式构造函数中的
    int
    参数构建的。从这里开始,我将简化代码,如下所示:

    data class MyDataClass (
        val myArr: ArrayList<Char>,
        val myMap: MutableMap<Char, MutableMap<String, String>>
    ) {
        constructor(n: Int): 
        this(
                ArrayList((0 until n).map { ('A' + it).toChar() }),
                mutableMapOf()
            )
    }
    
    data class Thingamajigg(val n: Int) {
        val myArr: ArrayList<Char> = arrayListOf()
        val myMap: MutableMap<Char, MutableMap<String, String>> = mutableMapOf()
    
        init {
            (0..n).forEach { myArr.add('A' + it) }
            myArr.forEach { myMap[it] = mutableMapOf() }
        }
    }
    
    数据类Thingamajigg(val n:Int){
    val myArr:ArrayList=arrayListOf()
    val myMap:MutableMap=mutableMapOf()
    初始化{
    (0..n).forEach{myArr.add('A'+it)}
    myArr.forEach{myMap[it]=mutableMapOf()}
    }
    }
    

    这符合你的需要吗?

    那么你想要一张地图地图吗?是的,
    myArr
    的所有数组项都应该是它的键
    (0到n)。将{('a'+it)映射到mutableMapOf()}.toMutableMap()
    那么你想要一张地图地图吗?是的,
    myArr
    的所有数组项都应该是它的键
    (0到n)。将{('a'+it)映射到mutableMapOf()}.toMutableMap()
    什么是
    对象映射()
    ?您的代码在()@AkshdeepSingh不起作用,很抱歉这是我的env上的
    .toMap().toMutableMap()
    什么是
    toObjectMap()
    ?您的代码在()@AkshdeepSingh不起作用,很抱歉这是我的env上的一个快捷方式,用于
    .toMap().toMutableMap()
    原因是我不需要每次都只从
    int
    param构建好的,我认为您可以根据需要调整我的代码,应该足够简单。如果您需要我编辑它,请告诉我:)原因是我不需要每次仅从
    int
    param构建好的,我认为您可以根据您的需要调整我的代码,应该足够简单。如果需要我编辑,请告诉我:)
    data class Thingamajigg(val n: Int) {
        val myArr: ArrayList<Char> = arrayListOf()
        val myMap: MutableMap<Char, MutableMap<String, String>> = mutableMapOf()
    
        init {
            (0..n).forEach { myArr.add('A' + it) }
            myArr.forEach { myMap[it] = mutableMapOf() }
        }
    }