2017-03-16 58 views
1

我想兩個測量陣列組合:結合UnitMass和UnitLength陣列

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} 
} 

我希望能夠能訪問元素的屬性.symbolunits變量:

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

謝謝。

+0

@OlegGordiichuk我認爲他們是類? 「NSUnitVolume類是一個Dimension子類,它封裝了卷的度量單位。」 – Alex

回答

2

從我的角度來看,這種方式非常直截了當。我沒有看到任何需要在之前合併數組。

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

print(symbols) // ["mg", "g", "kg", "oz", "lb", "cm", "dm", "m"] 
+1

我還要指出,地圖可以像......'unitMasses.map {$ 0.symbol}'完成:D – Fogmeister

+0

@Fogmeister謝謝 - 不確定這個約定是否適合我...!有點難看 – Alex

+0

@Oleg Gordiichuk謝謝! – Alex

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 }) 
}