В самом деле, как Swift программист, вопрос, чтобы спросить, почему не использование var
над let
? Это одна из областей, где Swift сильно отличается в семантике с других языков, таких как C#.
Причина в том, что, как только вы получите ссылку на ячейку таблицы, эта ссылка не изменится на время жизни каждого вызова этого метода. Нет никаких переназначений в cell
, потому что просто нет причин для этого. И поэтому нет причин делать cell
переменной.
В целом, в Свифт, вы должны default to using let
, and only use var
if you need to reassign. Помните, что let
предотвращает только постоянную константу переназначен; вы все же можете мутировать объект, на который ссылаются, как это делается в cell.textLabel!.text = person...
в этом случае.
Существуют и другие тонкие отличия, которые далее рассматриваются в Apple's documentation, но это относится к большинству случаев.
Есть ли какие-либо улучшения в компиляторе для использования 'let' over' var'? «Var» медленнее или что-то еще? Это просто указывает на семантику? –
@Bjorn Tipling: компилятор не позволит вам переназначить константу, объявленную с помощью 'let', и будет выходить из строя, если она замечает, что вы пытаетесь сделать это, по ошибке или по назначению. – BoltClock
Я сравниваю с C#, где оба эти значения являются переменными. Кажется странным объявлять все как константы. Но я согласен, что хранилище никогда не изменится, 'let' работает. – 4thSpace