【问题标题】:how to access a member of struct that is a member of array in swift如何快速访问作为数组成员的结构成员
【发布时间】:2021-07-12 23:07:54
【问题描述】:

我有一个名为 items1 的数组,它的成员是一个结构 Team1,有 2 个成员 id:UUID() 和 round:Int 我想创建一个函数来计算数组的 round 成员的总和。谁能帮我理解我在下面的代码中做错了什么:

import Foundation

struct vrb {
    static var items1 = [
        Team1(id: UUID(), round: 14),
        Team1(id: UUID(), round: 20),
        Team1(id: UUID(), round: 24),
    ]

    static var total1: Int = 0
}

func Total() -> Int {
    var sum = vrb.items1[round.reduce(0, +)]
}

struct Team1: Identifiable {
    var id: UUID
    var round: Int
}

【问题讨论】:

    标签: arrays swift function struct


    【解决方案1】:

    你有点接近。您正在寻找的是:

    func total() -> Int {
        vrb.items1.map(\.round).reduce(0, +)
    }
    

    items1 的每个元素映射(“转换”)到它的.round 值,然后将它们相加。

    (请注意,函数、方法和变量应该有一个前导小写字母,而像结构这样的类型应该有一个前导大写字母。这使得其他 Swift 开发人员更容易理解您的代码。)

    【讨论】:

    • 最后一个问题...如何在第一个 struct vrb 中调用函数?
    • 我不明白这个问题。这里实际上没有“struct vrb”。您已经创建了一个静态变量。这只是创建了一个具有命名空间的全局变量。在这种情况下,您的意思是“内部”并不清楚。
    • 对不起,我对 swift 和编程有点陌生,而且我是自学成才的,所以有点不清楚......我想说除非你这样做,否则该功能将无法工作调用它,我希望该函数进行该计算并稍后在视图中显示它
    • 我不知道如何回答这个问题。这取决于您如何使用 VRB,以及您尝试使用它做什么。我怀疑你在这里做了太多static 的事情(这是一个更高级的工具;如果你刚刚开始,只有极少数情况下需要static)。我建议打开一个新问题来解释您要做什么。
    • 我不知道我是如何开始使用静态的,但它以某种方式工作......在我的脑海中使用了静态,所以你可以在该结构之外使用这些变量......我很确定它是不是它的工作,但它以某种方式起作用!我真的是 swiftui 新手,这只是我的第二个或第三个项目,但我觉得我正在向前迈进……谢谢你帮助我
    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多