Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
skill / Лбы skill / Лекция2_м.doc
Скачиваний:
46
Добавлен:
05.06.2015
Размер:
157.18 Кб
Скачать

Лекция 2.

Организация данных. Символы. Строки.

Операторы доступа в SKILL

Некоторые операторы доступа имеют характерный тип (вид). То есть синтаксис доступа к различным типам данных может быть одинаковым.

Оператор “стрелка” (->)

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

Оператор “волнистая стрелка” (~>)

Этот оператор является обобщением обычной стрелки. Кроме доступа непосредственно к объекту с помощью этого оператора также можно осуществить доступ к списку подобных объектов. В этом случае оператор «стрелка» будет применён к каждому элементу списка.

Доступ к массиву( матрице) [ ]

Данный синтаксис может быть использован для доступа к:

  • элементам матрицы

  • паре значений в ассоциативной таблице.

Символы (Symbol)

В SKILLсимволы играют ту же роль, что и переменные в С. Часто термины “символ” и “переменная” подменяют друг друга; при этом символы вSKILLмогут быть использованы и для других целей. Каждый символ обладает следующими составляющими:

  • имя

  • значение

  • функциональное выражение

  • список свойств.

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

Создание символов

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

Создание символов с заданным именем с помощью функции gensym():

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

gensym([ S_arg ])

Возвращает новый символ исходя из входного аргумента. Печатное имя нового символа получается в результате объединения печатного представления аргумента, или “G”, если аргумент не задан, и десятичного представления числа. Возвращаемый символ уникален, то есть не существует в момент вызова функции. Значение символа по умолчаниюunbound.

Пример:

gensym() => G5

gensym(“test”) => test6

test7=10

gensym(“test”) =>test8 так какtest7 уже существует.

num- это символ.

num= 5 ; = - знак присвоения.

=> 5 ; возвращается значение 5.

‘ - обращение к знаковому изображению символа,

а = ‘num;возвращает не 5, аnum

a=>num

Создание символов из нескольких строк (concat)

concat(Sx_arg1[ Sx_arg2 ... ])

Складывает строки, символы или целые числа в единый символ. Эта функция полезна для преобразования строк в символы. Для складывания нескольких строк в единую строку используйте функцию strcat.Имя символа ограничено 255 знаками.

Символьные функции eq, memq, caseqи др. работают гораздо быстрее, чем их аналогиmember, case, equal, так как они сравнивают указатели, а не данные. Для увеличения быстродействия вы можете использовать функциюconcatдля преобразования строки в символ перед выполнениемmemqна больших списках.

Sx_arg1– Строка, символ или целое число, предназначенное для сложения.

Sx_arg2 – Ни одной или более строк, символов, целых чисел для сложения.

Пример

concat("string") => string

concat("ab" 123 'xy) => ab123xy

Соседние файлы в папке Лбы skill