Как объявить переменные без инициализации - PullRequest
0 голосов
/ 28 сентября 2018

Пожалуйста, дайте мне знать причину, по которой оба из

var name: String
var age: Int

имеют следующее сообщение об ошибке:

property must be initialized or abstract.

Я хотел бы объявить их без инициализации

Main :

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 голосов
/ 28 сентября 2018

В нем также говорится: 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."
  }*/
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...