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循环当然没有什么错,但它可以更干净
进一步阅读
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
}