我正在使用swift编写一个新的UIView子类。我希望有一个视图数组,为了清楚起见,我想在初始声明中实例化它们。
如果这是一个Int数组,我可以这样做:
let values: [Int] = (0...4).map() { $0 }
所以我试图想出一些类似的漂亮的单行程,它将创建一个UIButton数组,而不是Ints。
我的第一个想法是(0...4).map() { UIButton.buttonWithType(.Custom) }
,但是如果我这样做(或者如果我用NSObject()替换UIButton代码),我会收到错误消息,说明"'转换'没有名为' map'"的成员。我可以,比如做map() { "\($0)" }
并得到一个字符串数组。
我的下一个想法是先获取一个int数组,然后使用那些上的map来返回按钮,例如:
let values: [UIButton] = (0...4)
.map() { $0 }
.map() { UIButton.buttonWithType(.Custom) }
但这给了我同样的错误。我在做什么错了,在这里?
答案 0 :(得分:3)
好的,解决方案很快就出现了:我想我无法悄悄地忽略我传入地图功能的闭包变量;我需要明确地忽略它。因此,要获得我的4个按钮数组,我可以在map函数中使用_,如下所示:
var buttons = (0...4).map() {_ in UIButton.buttonWithType(.Custom) }
或我最终使用的内容:
lazy var buttons: [UIButton] = (0...4).map() { _ in
let button = UIButton.buttonWithType(.Custom) as UIButton
self.addSubview(button)
return button
}