对addSubview()
的{{1}}实例contentView
进行三次单独调用可能会缩减为Swift UITableViewCell
:
map(_:)
但是,速记会抛出一个错误:"匿名闭包参数不包含在闭包中#34;。 [nameLabel, numberLabel, informationLabel].map(contentView.addSubview($0))
会在这里最好吗?
答案 0 :(得分:4)
此代码无效,因为它使用匿名闭包参数 $0
,而不是在闭包中。
[nameLabel, numberLabel, informationLabel].map(contentView.addSubview($0))
有两种方法可以解决这个问题,或者把它放在一个闭包中:
[nameLabel, numberLabel, informationLabel].map{ contentView.addSubview($0) }
或者更好的是,只需直接使用实例方法:
[nameLabel, numberLabel, informationLabel].map(contentView.addSubview)
在任何一种情况下,您都应该使用forEach
而不是map
,因为您不关心Void
的{{1}})返回值:< / p>
addSubview
答案 1 :(得分:2)
当closure返回void
时使用.forEach [nameLabel, numberLabel, informationLabel].forEach { contentView.addSubview($0) }