2017-03-16 60 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 }) 
}