kotlin - 如何使用变量的主体将数据从变量传递到构造函数?

标签 kotlin primary-constructor

我正在尝试使用创建的变量将数据分配给我的类(class)。我想将变量用作成员资格类的实例。每当我传递任何值时,我都会得到一个错误。

error: no value passed for parameter '_number'


var member1 = membership()

error: unresolved reference: _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';
}

最佳答案

您已使用主要构造函数声明了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
}

这样,您就可以根据需要在问题中对其进行初始化。

关于kotlin - 如何使用变量的主体将数据从变量传递到构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58573762/

相关文章:

constructor - 为什么 Kotlin 有两种类型的构造函数?

c# - 主构造函数未在 C# 6.0 中编译

kotlin - 什么时候应该使用加号、减号、时间函数而不是 Kotlin 中的运算符?

object - Kotlin 中如何知道对象是否是单例?

android - Kotlin (Android) RecyclerView 中不需要的复选框选择

kotlin - sortedDescending() 和 sortedByDescending() 有什么区别?

android - Kotlin 1.2.40 版本上的 Kotlin 房间数据库崩溃

Kotlin 。如何声明常量?