为什么我们需要指定init方法? [英] Why do we need to specify init method?

查看:116
本文介绍了为什么我们需要指定init方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

即使未指定 init 方法,以下代码块也可以正常运行.如果是这种情况, init 方法有什么用途?

The following block of code runs fine even without specifying the init method. If this is the case, what purpose does the init method serve?

struct Person {
    var name: String
    var age: Int

    init(name: String, age: Int){
        self.name = name
        self.age = age
    }

}

let somePerson = Person(name: "Sam", age: 21)
somePerson.name
somePerson.age

谢谢您的反馈.

推荐答案

这是Struct快速运行的行为.

It's the behavior of Struct in swift.

请参见 https中的(结构类型的成员初始化程序) ://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html

结构类型会在以下情况下自动接收成员初始化器 他们没有定义任何自己的自定义初始化程序.不像一个 默认的初始值设定项,该结构接收一个成员式初始值设定项 即使它存储的属性没有默认值."

"Structure types automatically receive a memberwise initializer if they do not define any of their own custom initializers. Unlike a default initializer, the structure receives a memberwise initializer even if it has stored properties that do not have default values."

如果您未指定任何成员初始化方法,它将为您创建.您声明的init允许您做的不只是简单的init.例如:

If you do not specify any memberwise init method, it will create for you. The init that you declare allow you to do more than just an simple init. For example:

struct Person {
    var name: String
    var age: Int

    init(name: String, age: Int){
        self.name = name.uppercaseString()
        self.age = age + 22
        //and more works ...
    }

}

这篇关于为什么我们需要指定init方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆