如何在不初始化的情况下声明变量

时间:2018-09-28 13:15:16

标签: kotlin

请让我知道为什么这两个原因

var name: String
var age: Int

具有以下错误消息:

property must be initialized or abstract.

我想声明它们而无需初始化

主要

data class Person(val _name: String,val _age: Int) {
  var name: String
  var age: Int

  init {
    name: String = _name.capitalize()
    age: Int = _age * 10;

    println("the name is: $name")
    println("the age is: $age")
  }

  /*override fun toString(): String {
    return "$name is $age years old."
  }*/
}

1 个答案:

答案 0 :(得分:0)

它还说:Unexpected tokens (use ';' to separate expressions on the same line)init函数中的内容。

实际上,您显示的消息只是许多问题之一。由于init函数已经损坏,编译器看不到分配,因此它也将声明本身标记为错误。

只需在init中的赋值上省略“类型声明”(实际上只是代码不应该在其中;-)),它将编译:

data class Person(val _name: String,val _age: Int) {
  var name: String
  var age: Int

  init {
    name = _name.capitalize()
    age = _age * 10;

    println("the name is: $name")
    println("the age is: $age")
  }

  /*override fun toString(): String {
    return "$name is $age years old."
  }*/
}