为什么使用"let"而不是var?

4th*_*ace -1 ios swift

在这个页面http://www.raywenderlich.com/85578/first-core-data-app-using-swift中,许多示例使用let而不是var.

func tableView(tableView: UITableView,
  cellForRowAtIndexPath
  indexPath: NSIndexPath) -> UITableViewCell {

  let cell =
      tableView.dequeueReusableCellWithIdentifier("Cell")
      as UITableViewCell

  let person = people[indexPath.row]
  cell.textLabel!.text = person.valueForKey("name") as String?

  return cell
}
Run Code Online (Sandbox Code Playgroud)

我在很多教程中看到了这一点.有没有理由在var上面的片段中使用let

Bol*_*ock 5

作为事实上,作为一个程序员雨燕,要问的问题是,为什么使用varlet?这是Swift与其他语言(如C#)在语义上有很大差异的一个领域.

原因是,一旦获得对表格单元格的引用,该引用在每次调用此方法的生命周期内都不会更改.没有重新分配cell,因为根本没有理由这样做.因此没有理由做出cell变数.

通常,在Swift中,您应该默认使用let,并且仅var在需要重新分配时使用.请记住,let只能防止常量本身被重新分配 ; 您仍然可以改变正在引用的对象,就像cell.textLabel!.text = person...在这种情况下所做的那样.

Apple的文档中还包含其他微妙的差异,但这适用于大多数情况.