Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Class 如何在kotlin中初始化类数组?_Class_Oop_Kotlin - Fatal编程技术网

Class 如何在kotlin中初始化类数组?

Class 如何在kotlin中初始化类数组?,class,oop,kotlin,Class,Oop,Kotlin,当我放置一个类数组的类型和大小时,我得到一个错误 我试过: fun main(args :Array<String>) { class modul() { var nommodul: String? = null var coeff: Int? = null var note: Int? = null } var releve class notes() { var releve:

当我放置一个类数组的类型和大小时,我得到一个错误

我试过:

fun main(args :Array<String>) {

    class modul() {
        var nommodul: String? = null
        var coeff: Int? = null
        var note: Int? = null
    }

    var releve

    class notes() {
        var releve: array<modul>(10){""} here the erreur 


    }
}
fun main(args:Array){
类模(){
变量nommodul:字符串?=null
变量系数:Int?=null
变量注释:Int?=null
}
风险相关
课堂笔记(){
var releve:array(10){“}这里是erreur
}
}

首先,您的代码有几个错误。这可能是MCVE和/或复制粘贴问题,但在开始使用阵列之前,我需要解决这些问题

不允许在
notes
类之前使用
var releve
。您没有分配它,也没有声明类型,如果您从问题中复制粘贴代码,编译器会抱怨

其次,数组变量本身:
array
是大写的,初始化是分开的。这将更加有效(注意,这仍然不起作用-解决方案将在本答案后面给出):

如果要直接创建它们,可以使用以下方法:

 var releve = Array(10) { modul() } 
关于这两个方面的一个注意事项:由于初始化,您得到了自动类型推断,并且不需要显式声明


如果需要Java样式的数组,则需要一个空数组

有两种方法可以做到这一点:

var releve = arrayOfNulls<modul>(10)
// or
var releve = Array<modul?>(10) { null }
var releve=arrayOfNulls(10)
//或
var releve=Array(10){null}
我强烈推荐第一个,因为它更干净。不过,我不确定在性能方面是否存在差异

请注意,这确实会推断出数组的可空类型,但它允许您以与Java类似的方式处理数组。从这一点开始初始化就像Java:
relve[i]=modul()
。如果您有要添加到每个类的参数,并且需要手动添加,那么这种方法非常有用。使用手动初始值设定项还为您提供了一个索引(),您可以在初始化时使用该索引

请注意,如果使用for循环进行初始化,也可以使用
Array(10){YourClass()}
,如果需要任何索引敏感信息,如函数参数,则可以使用提供的索引。使用for循环当然没有什么错,但它可以更干净


进一步阅读

这里是kotlin阵列初始化的一些示例:

库方法数组

val strings = arrayOf("January", "February", "March")
基元数组

val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
使用索引延迟初始化

val array = arrayOfNulls<Number>(5)

for (i in array.indices) {
    array[i] = i * i
}
val数组=arrayOfNulls(5)
对于(数组中的i.index){
数组[i]=i*i
}

有关详细信息,请参见

您的答案没有包括如何初始化用户定义类实例数组,这是作者的问题
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
val array = arrayOfNulls<Number>(5)

for (i in array.indices) {
    array[i] = i * i
}