Вход/Регистрация
Программирование на Objective-C 2.0
вернуться

Кочан Стивен

Шрифт:

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

Оператор enum { east, west, south, north } direction;

определяет неименованный перечислимый тип данных со значениями east, west, south и north (восток, запад, юг и север) и объявляет переменную (direction) этого типа.

Определение перечислимого типа данных в блоке ограничивает область действия этого определения данным блоком. С другой стороны, определение перечислимого типа данных в начале программы (вне какого-либо блока) делает определение глобальным для данного файла.

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

Objective-C позволяет назначать для типа данных альтернативное имя. Для этого используется оператор typedef. В следующей строке определяется имя Counter (счетчик) как эквивалент типа данных Objective-C int. typedef int Counter;

Затем можно объявить переменные с типом Counter, как в следующей строке. Counter j, n;

Компилятор Objective-C будет интерпретировать это как объявление обычных целых переменных j и п. Определение j и п посредством typedef указывает назначение переменных в программе. Объявление в традиционной форме с типом int оставило бы их назначение непонятным.Ниже с помощью typedef определяется тип с именем NumberObject для объектов типа Number. typedef Number *NumberObject;

Переменные, которые объявляются затем с типом NumberObject, как в строке NumberObject myValuel, myValue2, myResult; будут интерпретироваться так, как если бы они были объявлены обычным образом: Number *myValue1, *myValue2, *myResult;

Чтобы определить имя нового типа с помощью typedef, нужно выполнить следующую процедуру.

Написать такое же объявление, как при объявлении переменной нужного типа.

Там, где должно быть имя объявляемой переменной, поместить имя нового типа.

Перед всем этим поставить слово typedef.

Для примера определим тип с именем Direction (Направление) как перечислимый тип данных со значениями east, west, north и south (восток, запад, юг и север), напишем определение этого перечислимого типа данных и подставим имя Direction там, где обычно ставится имя переменной. Перед всем этим нужно поместить ключевое слово typedef. typedef enum { east, west, south, north } Direction; После этого можно объявлять переменные с типом Direction: Direction stepl, step2; Foundation framework содерж ит следую щ ее определение typedef для NSComparisonResult в одном из заголовочных файлов. enum NSComparisonResult { NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending }; typedef NSInteger NSComparisonResult;

Некоторые методы в Foundation framework, которые выполняют сравнение (comparison), возвращают значение этого типа. Например, метод сравнения строк Foundation с именем compare: возвращает значение типа NSComparisonResult после сравнения двух строк, которые являются объектами NSString. Этот метод объявляется следующим образом. -(NSComparisonResult) compare: (NSString *) string;

Чтобы проверить равенство двух объектов NSString с именами userName и savedName, можно включить в программу следующую строку. if ( [userName compare: savedName] == NSOrderedSame) { // Имена совпадают }

На самом деле здесь проверяется, равен ли нулю результат метода compare: 10.6. Преобразования типов данных

В главе 4 говорилось о том, что иногда при оценке выражений система неявным образом выполняет преобразования. Там рассматривался случай с типами данных float и int. Операция, включающая типы float и int, выполнялась как операция с плавающей точкой, и элемент данных целого типа автоматически преобразовывался в элемент с плавающей точкой.

Там же было показано, как использовать оператор приведения типа, чтобы явно определить преобразование. Пусть total и п являются целыми переменными. В строке average = (float) total / n;

значение переменной total преобразуется в тип float до выполнения операции, что гарантирует выполнение деления как операции с плавающей точкой. Правила преобразования

Компилятор Objective-C соблюдает строгие правила при оценке выражений, состоящих из разл ичных типов данных.

Ниже описывается порядок, в котором выполняются преобразования при оценке двух операндов в выражении.

Если один из операндов имеет тип long double, второй операнд преобразуется в long double, результат имеет такой же тип.

Если один из операндов имеет тип double, второй операнд преобразуется в double, результат имеет такой же тип.

Если один из операндов имеет тип float, второй операнд преобразуется в тип float, результат имеет такой же тип.

Если один из операндов имеет тип Bool, char, short int или bit field1 или перечислимый тип данных, то он преобразуется в тип int.

Если один из операндов имеет тип long long int, второй операнд преобразуется в long long int, результат имеет такой же тип.

  • Читать дальше
  • 1
  • ...
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: