2015-10-02 3 views
0

С одним из последних обновлений Xcode он продолжает говорить, что я пытаюсь использовать «let», а не «var». Зачем? Я бы подумал, что «var» будет лучше всего использовать и использовать «let» только в определенных ситуациях.Почему Xcode продолжает настаивать на использовании let, а не var?

+0

IIRC, 'let' предназначен исключительно для констант,' var' для переменных. возможно, xcode видит, что вы не изменяете какую-либо переменную в любом месте и полагаете, что она должна быть константой? – CollinD

+4

Из [Быстрый язык программирования] (https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID310): «Если сохраненное значение в вашем коде не изменится, всегда объявляйте его константой с ключевым словом let. Используйте переменные только для хранения значений, которые необходимо изменить». – Moritz

ответ

3

Вы всегда должны стараться сделать самое безопасное. Если вы можете изменить объект, вы можете его по ошибке изменить. Если вы не можете изменить объект, вы не можете его по ошибке модифицировать. Поэтому, если вы не хотите изменять объект или значение, вы должны использовать «let», а не «var».

Или посмотрите на это наоборот: если вы используете «var», вы заявляете, что собираетесь изменить значение. Если вы не изменяете значение, это может быть связано с тем, что вы использовали неправильное имя переменной. Скажем, у вас есть var x и var y, тогда вы пишете x = 100 и x = 200. Вы использовали неверный идентификатор во втором случае. Компилятор обнаруживает, что ваши намерения и действия были разными.

4

Совершенно верно, let безопаснее.

С let разработчик явно заявляет, что значение является константой, которая не должна меняться, а компилятор обеспечивает это, это обеспечивает концепцию использования разработчиками.

С var разработчик явно заявляет, что значение может измениться, это изменение ожидается. В случае, если значение не изменяется, компилятор уведомляет разработчика об этом и что разработчик может (должен) изменить на let.

К компилятору, обеспечивающему это, база кода более безопасна из-за непреднамеренных изменений значений.