Swift - 动态初始化嵌套结构

时间:2015-08-27 18:28:30

标签: swift struct initialization nested

我想知道我是否可以做标题所暗示的内容。 这是一些代码。

struct Crop {
    var name = String()
    var season = String()
    var reharvistable = Bool()

    //struct Stages:     
    struct Stage1{
        var minDay = Int()
        var maxDay = Int()
        var minWater = Int()
        var maxWater = Int()
    }/* 
    struct Stage2{
        var minDay = Int()
        var maxDay = Int()
        var minWater = Int()
        var maxWater = Int()
    } */
}

var Crops  = [Crop]()
var temp = Crop(name: "Turnip", season: "Spring", reharvistable: false)

Crops.append(Crop(Name: "Turnip", Season: "Spring", Reharvistable: 
     false,  Stage1(minDay: 2, maxDay: 3, minWater: 2, maxWater: 7)))

第二阶段已被注释掉,但我希望将来能够进入第六阶段。

“temp”有效但我尝试将它们添加到数组中却没有。我的最终目标是将这些“裁剪”存储在一个数组中,“裁剪”,所以我希望能够动态添加更多“裁剪”。 此外,括号是在每种数据类型之后,因为它们在没有它们的情况下给我一个错误。

1 个答案:

答案 0 :(得分:2)

如何在crop结构中定义阶段结构,而不是单独定义它们并在crop中包含stage数组。像这样:

struct Crop {
    var name = String()
    var season = String()
    var reharvistable = Bool()
    var stages = [Stage]()
}

struct Stage {
    var minDay = Int()
    var maxDay = Int()
    var minWater = Int()
    var maxWater = Int()
}

然后你可以定义这样的裁剪:

Crops.append(Crop(name: "Turnip", season:" spring", reharvistable: false, stages: [
    Stage(minDay: 2, maxDay: 3, minWater: 2, maxWater: 7),
    ...
])

通过这种方式,您可以拥有与您一样多的舞台,并随意添加或删除它们。