6.1.2. Символы как метазначения
6.1.2. Символы как метазначения
Мы нередко пользуемся исключениями, чтобы уйти от кодов возврата. Но никто не мешает возвращать коды ошибки, если вам так хочется. К тому же в Ruby метод может возвращать более одного значения.
В таком механизме часто возникает необходимость. Когда-то символ NUL кода ASCII вообще не считался символом. В языке С есть понятие нулевого указателя (NULL), в Pascal есть указатель nil, в SQL NULL означает отсутствие какого бы то ни было значения. В Ruby, конечно, тоже есть свой nil.
Проблема в том, что такие метазначения часто путают с действительными значениями. В наши дни все считают NUL настоящим символом кода ASCII. И в Ruby нельзя сказать, что nil не является объектом; его можно хранить, над ним можно выполнять какие-то операции. Поэтому не вполне понятно, как интерпретировать ситуацию, когда hash [key] возвращает nil: то ли указанный ключ вообще не найден, то ли с ним ассоциировано значение nil.
Идея в том, что иногда символы могут выступать в роли подходящих метазначений. Представьте метод, который получает строку из сети (возможно, по протоколу HTTP или иным способом). При желании можно было бы вернуть нестроковое значение как индикатор исключительной ситуации.
str = get_string
case str
when String
# Нормальная обработка.
when :eof
# Конец файла, закрытие сокета и т.п.
when :error
# Ошибка сети или ввода/вывода.
when :timeout
# Ответ не получен вовремя.
end
Можно ли сказать, что это «лучше», чем механизм исключений? Необязательно. Но такую методику стоит иметь в виду, особенно когда приходится обрабатывать «граничные случаи», которые не считаются ошибками.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
13.4.1. Широкие символы
13.4.1. Широкие символы Мы начнем с концепции широких символов (wide character). Широкий символ является целым типом, в котором может храниться любое значение из определенного используемого многобайтного набора символов.Широкие символы представлены на С типом wchar_t. C99
Вступление: стандартные символы и символы Unicode
Вступление: стандартные символы и символы Unicode Прежде чем двигаться дальше, необходимо кратко объяснить, как Windows обрабатывает символы и различает 8-битовые, 16-битовые и обобщенные символы. Эта тема весьма обширна и выходит за рамки данной книги, поэтому мы не будем
Отладочные символы
Отладочные символы Большинство программ и библиотек по умолчанию компилируются с символами отладки. ( с опцией gcc -g).При отладке программы или библиотеки, скомпилированной с отладочной информацией, отладчик предоставляет не только адреса в памяти, но и имена алгоритмов и
Символы
Символы СимволС помощью кнопки Символ вы можете вставить в текст всякие символы, которых нет на клавиатуре. Список некоторых особо популярных символов открывается сразу при щелчке на этой кнопке. Среди них значки евро, фунта стерлингов, некоторые греческие буквы и т. д.
6.1. Символы
6.1. Символы Символ в Ruby — это экземпляр класса Symbol. Синтаксически он обычно обозначается двоеточием (:), за которым следует идентификатор.Символ похож на строку, он тоже соответствует последовательности символов. Отличие от строки состоит в том, что у каждого символа есть
6.1.1. Символы как перечисления
6.1.1. Символы как перечисления В языке Pascal и в поздних версиях С есть понятие перечисляемого типа. В Ruby ничего подобного быть не может, ведь никакого контроля типов не производится. Но символы часто используются как мнемонические имена; стороны света можно было бы
Символы
Символы Эти знаки соответствуют типографским символам, таким, как А, &, + и т. п. Обычно под каждый символ отводится 1 байт памяти.Char: ключевое слово, используемое для указания данных этого типа. Данные этих типов могут принимать положительные и отрицательные
1. Металингвистические символы
1. Металингвистические символы При описании синтаксических конструкций, использующихся в записи оператора создания базового отношения на псевдокоде, применяются различные металингвистические символы. Это всевозможные открывающие и закрывающие скобки, разнообразные
Пробельные символы
Пробельные символы Символы пробел, табуляция, перевод строки, возврат каретки, новая страница, вертикальная табуляция и новая строка называются пробельными, поскольку они имеют то же самое назначение, что и пробелы между словами и строками в тексте на естественном языке.
Специальные символы
Специальные символы Картинками мы балуем документ сравнительно редко, а вот к услугам специальных символов приходится прибегать куда чаще. «Специальными» мы называем те символы, которые не указаны на нашей клавиатуре. И неважно, что это – значки арабской вязи, китайские
Специальные символы
Специальные символы Элементы (ключевые слова, параметры), которые обязательны во всех случаях, появляются без каких-либо дополнительных пометок, они выделены таким шрифтом, как и весь код в книге. В предыдущем примере ключевые слова SELECT и FROM являются обязательными для
6.1.3. Форматируем символы
6.1.3. Форматируем символы Для выполнения заданий нам понадобится материал разд. 5.1.4 и 5.1.5. Задание № 11. Открыть файл упр. pages, перейти на пустую страницу документа, вставив разрыв в конце последней строки аналогично предыдущему разделу.2. Набрать с клавиатуры фамилию, имя,