2015-02-17 4 views

ответ

5

В самом деле, как 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, но это относится к большинству случаев.

+0

Есть ли какие-либо улучшения в компиляторе для использования 'let' over' var'? «Var» медленнее или что-то еще? Это просто указывает на семантику? –

+0

@Bjorn Tipling: компилятор не позволит вам переназначить константу, объявленную с помощью 'let', и будет выходить из строя, если она замечает, что вы пытаетесь сделать это, по ошибке или по назначению. – BoltClock

+0

Я сравниваю с C#, где оба эти значения являются переменными. Кажется странным объявлять все как константы. Но я согласен, что хранилище никогда не изменится, 'let' работает. – 4thSpace

Смежные вопросы