我试图以优雅的方式创建多个结构实例。
我有一个名字的数组:
let instanceNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
以及与之相符的结构:
struct days {
var date = ""
var description = ""
var otherValue = ""
}
我想要最终得到的是:
var Monday = days()
var Tuesday = days()
var Wednesday = days()
var Thursday = days()
var Friday = days()
有没有办法在一行中做到这一点,我试过这个,但当然它没有用:
for day in instanceNames {
var day = days()
}
任何帮助都会受到赞赏!
答案 0 :(得分:2)
您无法将实例分配给day
值。 day
是您的案例中的字符串。
如果要每天创建实例,可以执行以下操作:
struct Day {
var date = ""
var description = ""
var otherValue = ""
}
var days : Day[] = []
for _ in instanceNames {
var day = Day()
days.append(day)
}
答案 1 :(得分:1)
不,没有办法以这种方式分配给很多局部变量,最好的办法就是用字典来做这个:
var d = Dictionary<String, days>()
for day in instanceNames {
d[day] = days()
}
然后,您可以使用d["Monday"]
等表达式来解决这些问题。
答案 2 :(得分:0)
尝试以下操作,它可能适合您。
let instanceNames = ["Monday", "Tuesday"]
struct days {
var date: String
var description: String
var otherValue: String
}
for day in instanceNames{
var day1 = days(date: day, description: "great", otherValue:"Awesome");
println(day1.date)
}
答案 3 :(得分:0)
我最终这样做了:
struct week {
var monday = day()
var tuesday = day()
var wednesday = day()
..
}
和
struct day {
var date = ""
var description = ""
..
}
现在我可以用一行代码初始化所有这些日子:
currentWeek = week()
创建一周中所有日子的对象。然后我可以通过
访问它们currentWeek.monday
例如。
感谢您的帮助!