如果我在作用域中有一些变量(不是属性),并在内部作用域中重新定义它,是否有办法从内部作用域访问原始变量?这是一个例子:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCellWithIdentifier("awesomeCell", forIndexPath: indexPath) as! AwesomeTableViewCell
cell.delegate = self
<outscope>.cell = cell
} else {
cell = UITableViewCell()
}
return cell
}
<outscope>
这里有类似self
的属性;有没有办法做到这一点?
答案 0 :(得分:2)
在您的代码中,if-block中的let cell = ...
引入了一个新变量
cell
从外部“隐藏”或“隐藏”cell
变量
范围。据我所知,没有语言功能可供访问
具有相同名称的外部变量。
你可以通过立即评估的闭包获得类似的效果, 它在本地范围内创建和配置单元格,并传递 结果回到外部范围:
let cell: UITableViewCell
if indexPath.section == 0 {
cell = {
let cell = tableView.dequeueReusableCellWithIdentifier("awesomeCell", forIndexPath: indexPath) as! AwesomeTableViewCell
cell.delegate = self
return cell
}()
} else {
// ...
}