1

我正在尝试组合两个测量阵列:

var unitMasses: [UnitMass] {
    return [.milligrams, .grams, .kilograms, .ounces, .pounds]
}

var unitLengths: [UnitLength] {
    return [.centimeters, .decimeters, .meters]
}

合为一:

var units: [AnyObject] {
    // This works:
    return [unitMasses].flatMap{$0}
    // But I've tried the following and this doesn't:
    //return ([unitMasses as AnyObject] + [unitVolumes as AnyObject]).flatMap{$0}
}

我希望能够访问变量.symbol中元素的属性:units

var symbols: [String] {
    return units.map({ unit in unit.symbol })
}

谢谢。

4

2 回答 2

2

从我的角度来看,这种方式更直接。我之前没有看到任何需要合并数组。

var symbols = unitMasses.map({$0.symbol})
symbols += unitLengths.map({$0.symbol})

print(symbols) // ["mg", "g", "kg", "oz", "lb", "cm", "dm", "m"]
于 2017-03-16T09:44:54.067 回答
1

接受的答案效果很好。为了完整起见,这就是我使用它的方式:

var units: [Dimension] {
    return unitMasses.map({ unit in unit }) + unitLengths.map({ unit in unit })
}

var symbols: [String] {
    return units.map({ unit in unit.symbol })
}
于 2017-03-16T10:01:30.733 回答