Inferno Programmer's Guide / Руководство программиста по ОС Inferno: Chapter 5 - The Limbo Language Definition
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Типы данных wuffur 19.06.09 в 12:04 |
|
|
Синтаксис типов данных таков: wuffur 19.06.09 в 12:04 |
||
|
data-type: byte int big real string tuple-type rapidfx 21.06.09 в 11:48 |
||
|
Объектов большинства типов данных имеют семантику значений; когда они присваиваются или передаются функциям, то место куда они назначаются принимает копию объекта. Последний изменяет себя на присвоенный объект и не воздейтсвует на исходный объект. Типы данных - byte, int, big, real, strng, tuple и абстрактные типы данных (adt). Остальные имеют семантику ссылок. Когда они присваиваются, число уже присвоеное - ссылка(указатель) на объект, на который указывается не копируется; эти изменения и операции над присвоенным объектом изменяют оригинальный объект. Ссылочные типы включают типы списков, массивов, каналов, модулей и ref adt. wuffur 19.06.09 в 13:11 |
||
|
Основные типы wuffur 19.06.09 в 13:12 |
||
|
Пять основных типов данных - byte, int, big, real и string.
wuffur 19.06.09 в 13:13 |
||
|
byte unsigned - беззнаковое целое, 8-bit wuffur 19.06.09 в 13:20 |
||
|
byte, int, big и real все вместе называются арифметическими типами. Строки - векторы символов Unicode. Они могут соединяться и расширяться символ-за-символом. Когда строка проиндексирована с помощью одного нижнего индекса, она содержит целое с Unicode расшифровкой символа; когда она индексируется по диапазону, она содержит другую строку. Строки индексируются начиная с 0. wuffur 19.06.09 в 13:23 |
||
|
Кортеж(фиксированный список, тьюпл) wuffur 19.06.09 в 13:23 |
||
|
Тип кортежа, обозначенный
wuffur 20.06.09 в 11:04 |
||
|
- это тип состоящий из упорядоченной коллекции двух или более объектов, у каждого из которых свой собственный тип данных. Для каждого типа кортежа, тип его члена фиксирован, но они не должны быть идентичными; Например, функций может вернуть кортеж содержащий целое и строку. Каждый тип кортежа характеризуется исключительно порядком и идентичностью типов, которые он содержит. Объекты типа кортежа могут быть объявлены списку идентификаторов (чтобы подобрать остальные компоненты), и заключенный в скобки, разделенный запятыми список выражений обозначает сам кортеж. wuffur 20.06.09 в 11:13 |
+1 | |
|
Тип массива wuffur 20.06.09 в 11:13 |
||
|
Тип массива описывает вектор объектов с динамической размерностью, которые все имеют один тип; они индексируются начиная с 0. Тип массива обозначается с помощью массива определенного типа данных(array of data-type) wuffur 20.06.09 в 11:15 |
||
|
Размер массива - это та часть, которая не является частью типа его данных; в отличие от этого - это часть значения. Тип данных сам по себе может быть массивом, для того, чтобы представлять многомерные массивы. wuffur 20.06.09 в 11:17 |
||
|
Тип списка wuffur 20.06.09 в 11:17 |
||
|
Список это последовательность однотипных объектов; задаваемый как rapidfx 20.06.09 в 18:38 |
||
|
Тип канала rapidfx 20.06.09 в 18:30 |
||
|
Канал, чей тип записывается rapidfx 20.06.09 в 18:53 |
||
|
Именованные типы rapidfx 20.06.09 в 18:38 |
||
|
Типы данных могут быть названы при помощи объявления типа; это будет рассмотрено в разделе "Объявление Типов". rapidfx 21.06.09 в 07:59 |
||
|
Тип модуля rapidfx 20.06.09 в 18:39 |
||
|
Тип модуля это имя идентификатора: rapidfx 21.06.09 в 11:47 |
||
|
Тип квалифицированный модулем wuffur 25.06.09 в 05:11 |
||
|
Когда тип объявили внутри модули объявления модуля, его название в основном не видно для большинства программ, до тех пор пока не дано специальное слово import(смотрите разделы Объявления с импортированием и Ссылки на модуля ).
wuffur 25.06.09 в 05:17 |
||
|
Абстрактный тип данных rapidfx 20.06.09 в 18:39 |
||
|
Абстрактный тип данных или adt - это объект, который может содержать объекты данных нескольких разных типов и объявление функции, которые работают ими. Абстрактный тип данных обозначает:
wuffur 25.06.09 в 05:19 |
||
|
Здесь модуль ref adt предостовляется как ссылка на объект(указатель) типа adt. Он обозначает: wuffur 25.06.09 в 05:23 |
||
|
Тип функции rapidfx 20.06.09 в 18:39 |
||
|
Тип функции характерезует передаваемыми ей аргументами и возвращаемым значением. Синтаксис таков:
wuffur 26.06.09 в 15:24 |
||
|
У обозначения типа функции есть ключевое слово fn, следующее за разделенным запятыми списком его аргументом, заключенных в скобки и, возможно, сопровождающееся типом значения, которое функция возвращает. Отсутствие возвращаемого значения означает, что функция его не возвращает - она является процедурой. Имена и типы аргументов определяются. Однако, имя аргумента заменяется на nil, делая его безымянным. Например:
wuffur 29.06.09 в 19:10 |
||
|
В следующий пример иллюстрирует пример функции, который берет аргумент строки и не возвращает никакого значения: wuffur 01.07.09 в 20:17 |
||
|
Символ звездочка * может передаваться как последний аргумент в типе функции. wuffur 01.07.09 в 20:29 |
||
|
Это означает, что первый аргумент функции print - строка и остальные могут быть переданы, когда функция вызывается. Сам по себе язык Limbo не имеет доступа к этим аргументам, используется искусственное обозначение для описания конструкций встроенных в runtime-систему поддержки исполнения программ, такую как модуль Sys. wuffur 01.07.09 в 20:33 |
||
|
Программы Limbo rapidfx 20.06.09 в 18:40 |
||
|
Исходный код программ на Limbo, в которым подключаемые модули хранятся в файлах, по соглашению заканчивается суффиксом .b. Каждый исходный файл, начинающийся директивы подключения имен модуля типа, продолжается последовательностью объявлений. wuffur 06.07.09 в 07:36 |
||
|
Другие файлы, имя которых по соглашению заканчивается суффиксом .m, содержат объявления для тех вещей, которые доступны из других модулей. Эти файлы объедены директивой include в подключаемых модулях, которые нужны ему. wuffur 06.07.09 в 07:39 |
||
|
Верхний уровень wuffur 06.07.09 в 07:39 |
||
|
На верхнем уровне, в программе есть последовательность объявлений. Синтаксис таков:
wuffur 06.07.09 в 07:41 |
||
|
Объявление ввода в программу в начале идентифицирует тип модуля который в нее вводится. В остальном коде программы находится последовательность различных типов объявлении и определений, которые анонсируют имена объектов данных, констант, типов и функции и они создают и инициализируют объявления и определения. Они должны включать объявления модулей для модулей, которые вводятся в код программы и объектов, которые они анонсируют. wuffur 10.07.09 в 10:22 |
||
|
Оба объявления используются на верхнем уровне(вне функций) и внутри функций и объявлений модулей. Некоторый стили объявлений разрешены только точно на каком-то из этих месте, но обсуждены они будут вместе. wuffur 11.07.09 в 18:12 |
||
|
Объявления rapidfx 20.06.09 в 18:40 |
||
|
Объявления принимают несколько форм: wuffur 27.07.09 в 22:41 |
||
|
Объявления
wuffur 27.07.09 в 22:42 |
||
|
Объявления типов данных wuffur 31.07.09 в 13:21 |
||
|
Эти формы составляют основной путь для объявления и инициализации данных: wuffur 31.07.09 в 13:23 |
||
|
Последовательность идентификаторов разделенная запятыми сопровождается двоеточием и затем именем типа. Каждый идентификатор объявлен имеющим этот тип и обозначает определенный объект для оставшейся части его области видимости (смотрите Видимость). Если объявление содержит = и выражение, все объекты инициализированы из значения выражения. В объявлении на верхнем уровне (вне функции), выражение должно быть константой или массивом инициализированным константными выражениями; граница массива должна быть константным выражением. wuffur 31.07.09 в 13:25 |
||
