在Kotlin中没有初始化器的变量

时间:2018-04-17 10:41:36

标签: kotlin

如何在没有初始化程序的情况下实现变量?

我在Kotlin文档中找到了:

val c: Int  // Type required when no initializer is provided
c = 3       // deferred assignment

但这不起作用。 IDE需要创建初始化程序。

3 个答案:

答案 0 :(得分:4)

如果您要声明顶级属性,则需要将其初始化为声明的一部分。如果您要声明局部变量,可以稍后对其进行初始化:

fun foo() {
    val c: Int
    c = 3
}

答案 1 :(得分:2)

  

我只想在其他类

中为“C”赋值

val可以两种方式使用(一起计算2和3):

  1. 对于局部变量,在这种情况下,在其他类中进行分配根本没有意义。您引用的文档涉及此案例。

  2. 对于具体属性,在这种情况下,它们可以与声明分开初始化,但只能在声明它们的类的init block中进行初始化。

  3. 用于抽象属性。但在这种情况下,你不能从其他类中分配它们,但只能实现这些属性。

答案 2 :(得分:-1)

对于val,您需要一起完成声明和作业。

对于您的情况,需要在声明部分之后修改此变量,因此var c: Int会更好。