В последнем посте мы рассмотрели типы значений, ссылочные типы и закончили с типами коллекций.



Сегодня мы все еще собираемся охватить основы, но хорошие новости заключаются в том, что после сегодняшнего дня вы сможете написать программу, которая решит ваши математические задачи, будь то математика из детского сада или сложные финансовые расчеты с использованием формулы.

Предварительный материал

Вы должны понимать концепцию порядка операций (PEMDAS)

На случай, если уроки математики были для вас слишком давними, вот порядок:

  1. Круглые скобки (изнутри наружу)
  2. Показатели слева направо
  3. Умножение слева направо
  4. Деление слева направо
  5. Сложение слева направо
  6. Вычитание слева направо

Вот и все!

Операторы

Пока вы дошли до 3-го класса, вы уже видели большинство операторов в программировании.

Давайте посмотрим на те, которые вам уже известны.

Легкие вещи, правда? Теперь давайте посмотрим на то, чего вы не знаете.

Хорошо, последний был странным, на самом деле он мой любимый, потому что он позволяет нам выполнять всевозможные классные математические вычисления, которые могут вызвать проблемы, например, если мы хотим присвоить номер каждой букве алфавита, а нам нужна 28-я буква (чего ждать?). Да, 28-е письмо. Ну, 28-я буква будет B, если мы вернемся к началу. Мы можем добиться этого с помощью %. Мы могли бы записать это как var value = 28 % 26. value тогда будет равно 2, что означает, что вторая буква алфавита - B. Так был создан шифр Цезаря; Позднее таким же образом был разработан шифр Виженера.

Операторы часто используются в программировании. Это то, как программы умеют делать вещи. Мы даже можем использовать оператор сложения не только для математики. Например, мы можем использовать его для сцепления строк вместе.

Обратите внимание, что я использовал имя переменной, хотя мог просто ввести

Он показывает, как мы можем использовать переменные и константы для хранения значений, чтобы нам не приходилось постоянно их вводить. О, хороший момент, и firstName, и lastName длиннее, чем их значение. Я мог бы просто изменить пример, указав фамилию Supercalifragilisticexpialidocious, но давайте оставим вещи реальными. Xcode имеет встроенную функцию автозаполнения, которая является настоящим спасением, но помимо этого мы не всегда знаем, каким будет значение firstName или lastName, поэтому мы просто используем имя переменной на месте, поэтому независимо от того, чье это имя, мы всегда можно быть уверенным, что у нас есть имя, за которым следует пробел, за которым следует фамилия.

Сокращенный способ сложения, вычитания, умножения и деления - добавить оператор к оператору присваивания (вы все равно можете объединять строки, используя этот метод, используя оператор сложения).

Надеюсь, вы уже поняли это и, возможно, пробовали исследовать самостоятельно. Практика - это всегда хорошо.

Необязательные и нулевые значения

Хорошо, я попытаюсь упростить это, но это может немного повредить вашему мозгу. Это хорошо, значит, ты будешь учиться.

Я хочу, чтобы вы вспомнили первую часть этой серии, когда я говорил о создании экземпляра и объявлении. как мы создали новые переменные. Я не сожалею, это было просто, чтобы спасти вас от этого, пока вы не будете готовы.

Мы можем просто объявить такие переменные

а затем присвоить значения переменной

Это прекрасно, но каково было значение a до того, как мы присвоили ему значение?

Значение было нулем. Не ноль, а ноль, пшик, нада, ничего! О, Боб, как ценность может быть ничем?

Для этого я хочу рассказать о том изображении записной книжки, которое вы видели выше. Допустим, в записной книжке 200 страниц. Когда мы заканчиваем каждую страницу, мы вырываем эту страницу и продолжаем завершать страницы, пока не дойдем до последней страницы. Мы вырываем ту последнюю страницу. Теперь в этой записной книжке 0 страниц. Все, что осталось, - это металлическая спираль, на которой когда-то помещалось 200 страниц и, вероятно, картонная передняя и задняя сторона. Теперь выбрасываем эту записную книжку. Все, что осталось, - это стол, на котором стоит записная книжка. Этот стол - наша переменная. Отсутствие записной книжки означает, что наша переменная равна нулю. Мы знаем, что на столе есть записные книжки, которые могут содержать любое целое число страниц, но мы не предоставили ему записную книжку, поэтому он не создан.

Ты все еще со мной? Повторяю еще раз, стол предназначен для блокнота со страницами, но у нас нет блокнота на столе. Давайте посмотрим, как это выглядит в коде, используя тонкий синтаксис, которого вы еще не видели:

? в конце типа в Swift сообщает вам, что переменная является необязательным значением. Вы не можете установить для необязательных переменных и констант значение nil. Вы даже можете создать экземпляры необязательных переменных заранее.

Это позволяет нам позже установить name в nil с помощью name = nil.

Вы можете спросить, зачем нам изначально устанавливать для необязательной переменной значение, отличное от nil? Если вы указываете фамилию человека в форме, полученной из социальной сети, вы можете создать переменную lastName как необязательную и указать, следует ли ее отображать. Если переключатель включен, мы продолжаем сообщать фамилию человека другим пользователям нашего приложения. Если переключатель выключен, мы устанавливаем для переменной lastName значение nil. Позже мы отображаем значение в lastName, если оно имеет значение.

Опциональные возможности очень эффективны, и позже вы увидите, как они делают Swift очень безопасным языком как для обеспечения обработки любых случаев, когда вы не получили ожидаемые данные, так и для проверки правильности использования типов.

Optionals и nils также позволяют нам устанавливать значения по умолчанию с помощью других операторов. Есть два типа: тернарные операторы и объединяющие ноль операторы. Мы обсудим тернарные операторы в следующем посте, но пока мы просто рассмотрим Оператор nil-coalescing, начиная с примера:

Оператор объединения с нулевым значением ?? используется для проверки, является ли значение слева нулем. Если это так, мы можем установить значение по умолчанию с правой стороны. В приведенном выше примере age будет создан со значением 26, потому что мы смогли получить значение из possibleAge.

Однако в этом примере age будет установлено значение 0, потому что possibleAge никогда не было установлено, что делает левую часть оценки равной nil. Хотя этот пример упрощает понимание, в большинстве случаев у вас будет много строк кода между тем, где вы задали значение, и тем, где вы закончили, так что вы действительно просто увидите это.

let data: String = possibleData ?? "No data found"

Имеет ли possibleData значение или нет? Что, если бы мы получили эти данные из Интернета? Мы понятия не имеем, будут ли у нас данные до времени выполнения или когда приложение будет запущено. Оператор nil-coalescing действительно выделяется здесь, потому что он позволяет нам обрабатывать случай, когда возможно, данные могут иметь или не иметь значение.

Резюме

Ух! На сегодня это много. Сделайте глубокий вдох, вы прошли через другую часть. Надеюсь, вы узнали немного о некоторых операторах, которые предлагает Swift. Я обещаю, что по тем, которые мы пропустили, мы рассмотрим их вовремя, вам нужно узнать больше, прежде чем мы дойдем до них.

Мы также узнали о дополнительных параметрах и рассмотрели некоторые базовые варианты их использования, а также поговорили о значениях nil, о том, почему мы можем их получить, и о том, как мы можем справиться с ними, если мы это сделаем.

Что дальше

В следующем посте мы расскажем о принятии решений и циклах. Здесь все начинает складываться вместе, и мы можем немного повеселиться. Не забывайте практиковаться между уроками. В программировании практика имеет большое значение.