【问题标题】:Newbie: referencing and initializing structure elements within structures新手:在结构中引用和初始化结构元素
【发布时间】:2020-05-12 22:11:57
【问题描述】:

好的,这里是一个超级新手 Swift 学习者,我确信这是一个简单的问题,由于某种原因我无法理解。

在下面的代码中,我创建了一个(非常)简单的地址簿结构,只是为了了解如何引用和初始化各种元素,尤其是结构中的结构。我做错了什么,有没有更好的方法来写这个?我遇到了错误(使用 Swift Playground)。

最后三行的错误:

实例成员“page”不能用于“AddressBookStruct”类型
实例成员“下标”不能用于类型“[AddressPageStruct]”。

另外,当我设置 var page = [AddressBookStrcut] 时,我得到了错误:

类型名称后的预期成员名称或构造函数调用

提前感谢您的理解。 :)

struct AddressPageStruct {
    let firstName: String
    let lastName: String
    let cellPhone: Int

    init(f: String, l:String, c:Int) {
        firstName = f
        lastName = l
        cellPhone = c
    }
}

struct AddressBookStruct {
    let color: String
    let size: String
    var page = [AddressPageStruct]
}

var littleBlackBook = AddressBookStruct.self

littleBlackBook.init(color: "Black", size: "Little")

littleBlackBook.page[0].cellPhone = 6191234567
littleBlackBook.page[0].firstName = "Bob"
littleBlackBook.page[0].lastName = "Smith"

【问题讨论】:

  • 请分享您的错误。
  • 最后三行错误:“实例成员 'page' 不能用于类型 'AddressBookStruct'”和“实例成员 'subscript' 不能用于类型 '[AddressPageStruct]'”。 ---- 另外,当我设置“var page = [AddressBookStrcut]”时,我收到错误“预期的成员名称或类型名称后的构造函数调用”

标签: arrays swift structure initializing


【解决方案1】:

结构是值类型,请检查这个。 structure vs class in swift language,

你不能制作这个 littleBlackBook.page[0].cellPhone,因为 cellPhone 是常量,你使用 let,而不是使用构造函数,我也将页面更改为 AddressPageStruct 的空数组

import Cocoa

struct AddressPageStruct {
    let firstName: String
    let lastName: String
    let cellPhone: Int

    init(f: String, l:String, c:Int) {
        firstName = f
        lastName = l
        cellPhone = c
    }
}

struct AddressBookStruct {
    let color: String
    let size: String
    var page = [AddressPageStruct]()
}

var littleBlackBook = AddressBookStruct(color: "Black", size: "Little")

littleBlackBook.page.append(AddressPageStruct(f: "Bob", l: "Smith", c: 6191234567))
print(littleBlackBook.page)

【讨论】:

    【解决方案2】:
    enter code here
        var littleBlackBook = AddressBookStruct(color: "Black", size: "Little")
        let item = AddressPageStruct(f: "Bob", l: "Smith", c:6191234567 )
        littleBlackBook.page.append(item)
        littleBlackBook.page.append(AddressPageStruct(f: "Joe", l: "Blog", c: 3123467))
        print(littleBlackBook.page[0])
        print(littleBlackBook.page[1])
        print(littleBlackBook)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2021-11-23
      • 2016-03-20
      • 2014-05-25
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多