gpt4 book ai didi

swift - 处理变量和if语句时如何减少Swift中的代码?

转载 作者:行者123 更新时间:2023-12-04 10:57:20 24 4
gpt4 key购买 nike

我目前正在构建一个应用程序来自学 Swift,所以我仍然很新。我遇到了一个问题。该应用程序是一个时间表创建者。我最多有 12 个科目都有分数。然后将这些点分布在几天内。我有一个代码概念,可以使用循环分配点,但想知道是否有一些东西可以减少代码量,而不是我目前拥有的每个主题的类似内容:

subject1.monpts = 20
subject1.tuepts = 20
subject1.wedpts = 20
subject1.thurpts = 20
subject1.fripts = 20
subject1.satpts = 20
subject1.sunpts = 20

这个,x12,是很多代码。但我需要它,以便每个主题都可以选择一周中每一天的点数(然后应用程序将根据这些点数分配时间)。为了打印时间表,我将每个 subjectX.daypts 放在一起,但这意味着我每天要写出 12 个主题。

如果变量实际上有一个值,我也只需要显示一些东西。我计划使用 if 语句来做到这一点,但这意味着为每个变量编写一个语句,目前为 12 x 7 = 48!例如。 (忽略形成 - 只是为了概念)
    if subjects1.monpts = 0 {
subjects1monLabel = isHidden.false
// or just a print / don't print statement
}

我觉得好像我错过了一种更简单的方法来做到这一点!

这是一张图片,可以更好地解释这个概念:

enter image description here

最佳答案

如果您想保存有关这些字段的信息,您可以拥有一个包含枚举键和整数值的字典,如下所示:

enum WeekDay: CaseIterable {
case monday, tuesday, wednesday, thursday, friday, saturday, sunday
}

struct Subject {
var pointsForWeekDay: [WeekDay: Int]
}

现在你可以这样做:
var pointsForWeekDay = Dictionary(uniqueKeysWithValues:
WeekDay.allCases.map { weekDay in
return (weekDay, 20)
}
)
var subject = Subject(pointsForWeekDay: pointsForWeekDay)
CaseIterable允许您访问枚举的所有值。
Map获取每个 weekDay 并使用您的 Int 值创建一个元组数组。

最后,您可以将其结合起来获得完整的 DictionaryuniqueKeysWithValues初始化程序,它采用生成的元组的数组。

关于swift - 处理变量和if语句时如何减少Swift中的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com