Как передать данные из переменной в конструктор, используя тело переменной?
Я пытаюсь назначить данные своему классу, используя созданную мной переменную. Я хочу использовать переменную как экземпляр класса членства. Каждый раз, когда я передаю какие-либо значения, я получаю сообщение об ошибке.
ошибка: для параметра _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
}
Таким образом, вы сможете инициализировать их, как хотите, в своем вопросе.