Swift 在类中初始化属性,在特定类中初始化惰性属性?

Swift 在类中初始化属性,在特定类中初始化惰性属性?,swift,properties,initialization,lazy-loading,Swift,Properties,Initialization,Lazy Loading,在swift中,当我声明某个类的实例时,该类中的属性是否已初始化 惰性属性在被调用/使用之前是不会初始化的(如果我错了,请纠正我),因此基本上声明类的实例不会初始化惰性属性,但会初始化常规属性(如果有)(我相信称为存储的) 最后,这本书说下面的实例是“声明的”和“初始化的”……我可以看到它是声明的,但它是如何“初始化的”??括号之间没有发送参数 let someClass = SomeClassWithLazyVar() 是(仅“常规”存储属性-这不适用于计算属性和惰性属性)。甚至只有在创建

在swift中,当我声明某个类的实例时,该类中的属性是否已初始化

  • 惰性属性在被调用/使用之前是不会初始化的(如果我错了,请纠正我),因此基本上声明类的实例不会初始化惰性属性,但会初始化常规属性(如果有)(我相信称为存储的)

  • 最后,这本书说下面的实例是“声明的”和“初始化的”……我可以看到它是声明的,但它是如何“初始化的”??括号之间没有发送参数

    let someClass = SomeClassWithLazyVar()
    
  • 是(仅“常规”存储属性-这不适用于计算属性和惰性属性)。甚至只有在创建类的实际实例时才会指定默认值

  • 对。苹果的文档说:

  • 惰性存储属性是一种直到第一次使用它时才计算其初始值的属性。通过在其声明之前写入lazy修饰符来指示延迟存储的属性

  • 粘贴的是“构造函数调用”。当您编写
    name\u of_class()
    时,实际上是在创建该类的实例(并立即调用其
    init()
    方法)。因此,正在使用所述实例初始化
    someClass
  • 是的,没错
  • 是的,这也是正确的
  • 正在初始化的是常量
    someClass
    。声明是在程序中引入一个新的命名值。声明常量(或变量)的名称并按如下方式标识其类型:

    init() { }
    
    让someClass:SomeClassWithLazyVar

  • 但到那时它还没有被初始化。通过为常量指定一个值来初始化该常量:

    someClass = SomeClassWithLazyVar()
    
    绝大多数情况下(尤其是常数),您声明常数并同时初始化:

    let someClass = SomeClassWithLazyVar()
    
    是否需要在括号内传递参数取决于所创建对象的初始值设定项。我假设
    SomeClassWithLazyVar
    有一个不带参数的初始值设定项,如下所示:

    init() { }
    

    老兄,你们真棒,多谢了,澄清了很多困惑!!哦,好的,“构造函数调用”和“初始值设定项调用”是一样的吗?如果是的话,在谈到这样的主题时,哪个术语更合适?基本上是的,它们是。我想这两种表达都可以使用。“构造函数调用”听起来更像是C++语言,但无论如何你都会被理解。