Читайте также:
|
|
Определение и использование перечислений
- Иногда это полезно, чтобы ограничить свои варианты. Скажем, я планирую создать приложение-бронирования авиабилетов, и я хочу переменную travelerSeatPreference, чтобы сказать, предпочитает ли кто-то окно, в середине или в место прохода. Теперь, если я определяю это как Int, это будет иметь целый ряд... ну, это большой. Составитель в обычном 64-битной машине, Int имеет ряд от двух до власти 64 минус один, который мы могли бы также сказать, от нескольких bazillion, kajillion возможных значений. Но я хочу, чтобы представлять только окна, в середине или в проход.
Теперь, конечно, в моей программе, я мог бы просто дать ему значение, скажем, два, и просто держать его в голове, что в моем приложении, нулевой должно означать проход и один должен означать средний и два средства окно. Но нет ничего, что на самом деле останавливается эту переменную от изменения до пяти или 73 или 385 000 000. Хорошо, это правда, есть несколько специализированных целые типы. В конце концов, когда я определяю тип аннотации здесь, и я типа в Int, я не только увидите Int, но Int16, Int32, Int64, и даже INT8 - восемь бит для меньших и меньших чисел.
Но даже самый маленький, INT8, имеет 256 возможных значений. Теперь, правда я мог хранить это в виде строки, если я хотел это сделать. И тогда я мог бы пойти дальше и дать этот строковое значение окна, но опять же, нет ничего действительно, что бы остановить это от того установлен на всякие разные ценности, и кто-то может измениться, что предпочтение путешественник посадочной 'банан,», и, собрать просто отлично. Поэтому мы хотим, чтобы ждать, чтобы определить некоторые данные, которые имеет более конкретный диапазон возможных значений.
И у нас есть, что с перечисления, или перечислений. Теперь, перечисления, конечно, существуют во многих языках, но опять же, у Свифта, мы делаем вещи, подобные, но не совсем такие же как в других языках. Чтобы сделать это, что мы будем делать кулак, определить перечисление, определить возможные значения. Если мы хотим иметь переменную, которая представляет предпочтение сиденья, ну что возможные значения это может быть? Чтобы установить это, мы используем слово перечисление, то имя нашего нового перечисления, а затем блок кода, открытие и закрытие фигурную скобку.
Теперь, стиль ориентиром здесь, потому что мы определяем новый тип данных, а не новая переменная тем не менее, является то, что мы используем заглавную первую букву для нашего нового перечисления. В этом случае, я говорю, SeatPreference будет новый тип. Я хочу, чтобы иметь возможность создавать переменные и константы типа SeatPreference, как я могу создать переменные или константы типа Int или типа строки. Так внутри этих скобок, я перечисляю возможные значения, что я хочу с животными. И вы можете использовать свои собственные слова здесь, что бы имеет смысл для нас.
В Свифт, они написаны как случаи, похожие на распределительном демона, так как мы используем случай ключевое слово, хотя в перечислении, мы не должны двоеточие. Это на всякий случай окно, дело Middle, дело Проход, дело NoPreference. Так я добавляю этот четвертый вариант здесь, в случае, если кто не выразил предпочтения. Я могу написать это в отдельных случаях или, еще одна альтернатива, вы на самом деле можете написать их только на одной строке, разделяя их запятыми: Случай окно, запятая, Middle, запятая, Проход, запятая, NoPreference. Лично я считаю, отдельные линии более читабельным.
Таким образом, каждый из этих случаев называются члена, или значение члена, перечисления. Там нет ограничения на количество из них. Если бы я хотел 100 различных значений членов в моем перечислении, это нормально. Это мое решение, что здесь, а слова до меня. Опять же, эти слова, как правило, написаны с заглавной первой буквы. Это не исполняется, он только что принял практику. Теперь, это только подготовка. Что все это означает, что после мы сделали это, мы можем использовать эту новую нумерацию, SeatPreference, как тип данных.
Так что я могу создать новую переменную. Я буду называть его VAR jenPrefers. Начните вводить. Мы можем получить автозаполнения здесь. SeatPreference, используя аннотацию типа. Таким образом, новая переменная называется jenPrefers, типа SeatPreference. В настоящее время она имеет тип, хотя это не имеет значения. Так что я могу добавить значение к этому. jenPrefers равные SeatPreference, точка, и она будет автоматически показывать нам, что полный код точек прохода, или в середине, или NoPreference, или окна. Давайте просто идти вперед с прохода.
Это сильно типизированных переменная типа SeatPreference, и это имеет значение прохода. Хотя, поскольку эта переменная, jenPrefers, уже ввели в SeatPreference перечисления, я могу, у Свифта, используйте сокращенный формат. Мне не нужно говорить SeatPreference. Это немного излишним. Я могу только сказать точек проходу или точка Средний или точка окно, потому что Свифт знает, что единственными возможными значениями для этой переменной являются значения членов SeatPreference. Так что я могу просто использовать эту коротком формате.
Но, говорит, что, как и с другими переменными или константами, если я уже знаю, какое значение я хочу установить для новой переменной или константы, я могу просто использовать вывод типов и все это на одной линии, а не два. Таким образом, создать новую переменную, royPrefers равно SeatPreference точка окна. И, предоставляя конкретный вариант SeatPreference, это теперь будет типа вывод как SeatPreference с этим конкретным значением.Преимущество делает все это не просто, что они ограничены конкретными значениями, но также, что позже, в коде, я мог бы сделать что-то вроде этого.
Мы будем добавлять новое заявление включите этой новой переменной, а внутри, что просто сделать некоторые случаи. Теперь, эти случаи в рамках Переключатель, конечно. Дело точка окна, дело точка прохода, дело точка Среднего или случае точка NoPreference. И что замечательно быстрым компилятор поймет все возможные случаи, что эта переменная имеет право быть. Опять же, с Переключатель в Swift, я должен быть исчерпывающим. Но компилятор признает, что я являюсь полностью исчерпывающим здесь.
Есть четыре возможных варианта, и я проверяю их все, так что я даже не нужно вариант по умолчанию в этом Переключатель. Опять же, потому что только варианты SeatPreference вариантов, это строго типизированный качестве переменной SeatPreference. Я могу только сказать случай точка окна, дело точка прохода, дело точка посередине, и так далее. Теперь, вот вещь: даже если вы не хотите сразу писать свои собственные перечисления, вы не можете избежать их. Вы увидите, что они распространены в рамках Apple, как способ представления выбора. И когда вы читаете чужие SWIFT-код или примеры из Apple, вы, вероятно, увидите много переменных, установленным на точечной что-то значение, или проверить на точечной что-то значение.
И это признак того, что эта переменная должна быть набраны как своего рода перечисления. В Xcode, вы можете опция кнопкой мыши имя переменной, чтобы увидеть, какие перечисления она была определена на, но вы увидите это много. Перечисления в Swift являются более мощными, чем в большинстве языков, и они идут дальше, чем это. Вы можете расширить определения перечисления для хранения внутренних значений, вы даже можете добавить свойства и методы для добавления функциональности, хотя, в большинстве случаев, что мы рассмотрели здесь будет все, что вам нужно.
Дата добавления: 2015-08-20; просмотров: 65 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Defining and using enumerations | | | Writing closures |