Как передать данные из переменной в конструктор, используя тело переменной?

Я пытаюсь назначить данные своему классу, используя созданную мной переменную. Я хочу использовать переменную как экземпляр класса членства. Каждый раз, когда я передаю какие-либо значения, я получаю сообщение об ошибке.

ошибка: для параметра _number не передано значение

var member1 = membership()

ошибка: неразрешенная ссылка: _number

member1._number = 1

Я получаю это для всех свойств, которым я пытаюсь передать что-либо.

Я пытался создать класс без конструкторов, но все равно получаю ошибки. Моя цель - создать список переменных.

class membership(_number:Int, _name:String, _address:String, _zip:String, _phone:String, _memberSince:String, _memberType:Char)
      {
        var number: Int = _number;
        var name: String = _name;
        var address: String = _address;
        var zip: String = _zip;
        var phone: String = _phone;
        var memberSince: String = _memberSince;
        var memberType: Char = _memberType;

    }

fun main(args: Array<String>) {



    var member1 = membership()
member1._number = 1
member1._name = "George Jetson";
member1._address ="123 Main St.";
member1._zip = "99207";
member1._memberSince = "12/01/1997";
member1._memberType = 'L';
}

1 ответ

Решение

Вы объявили класс membershipс основным конструктором, который ожидает 7 параметров. Следовательно, вам необходимо предоставить значения для этих параметров при создании экземпляра этого класса:

var member1 = membership(
   _number = 1,
   _name = "George Jetson",
   _address ="123 Main St.",
   _zip = "99207",
   _memberSince = "12/01/1997",
   _memberType = 'L'
)

Если вы хотите сначала создать экземпляр класса, а затем инициализировать его свойства одно за другим, вам понадобится конструктор без параметров:

class membership() { 

Однако тогда вам придется сделать все его свойства обнуляемыми или lateinit, потому что теперь вы не можете предоставить их начальные значения при построении:

class membership() {
   var number: Int? = null
   var name: String? = null
   var address: String? = null
   // etc
}

Таким образом, вы сможете инициализировать их, как хотите, в своем вопросе.

Другие вопросы по тегам