
- •Организация данных. Символы. Строки.
- •Доступ к массиву( матрице) [ ]
- •Создание символов из нескольких строк (concat)
- •Печатное имя символа
- •Получение печатного имени символа
- •Значение символа
- •Придание символу значения
- •Получение значения символа
- •Использование оператора точка для доступа к свойствам символа
- •Будьте осторожны!
- •Строки(String)
- •Сложение входных строк с указанием количества литер для сложения
- •Сравнение строк
- •Структуры, определяемые пользователем
Использование оператора точка для доступа к свойствам символа
Оператор точка (.) предлагает наиболее простой путь для доступа к свойствам, хранящимся в списке свойств символа. Слева и справа от оператора должны быть символы. Например:
U235.x => 200
Вместо оператора точка можно использовать функцию getqq. Например, следующие выражения идентичны:
U235.x
getqq( U235 x )
getqq(s_id S_name)
getqq(sl_id.s_name)
Возвращает значение свойства из списка свойств символа. Аналогична get, за исключением того, что ни один из аргументов не вычисляется. Это синтаксическая форма. Используется вместе сputprop.putpropхранит свойство, аgetqqвозвращает его.
s_id – символ, чьё свойство необходимо взять.
S_name – имя свойства, значение которого необходимо получить.
Пример
putprop( 'chip 8 'pins ) => 8 ;Присваиваем свойству pins символа chip значение 8
getqq( chip pins ) => 8
chip.pins => 8
Если запросить значение определенного свойства символа, и это свойство отсутствует в списке свойств символа, возвращается nil.
putprop(sl_id g_value S_name) добавляет свойство символу или disembodied property lists.
Если свойство уже существует, то старое значение изменяется на новое.
sl_id-символ или disembodied property list
g_value-значение свойства
S_name- имя свойства
Пример:
putprop(‘s 1+2 ‘x) => 3
Устанавливает свойство xравное 3 для символаs.
Также существуют функции getиgetq. Различие между ними в том, что функцияgetqqне вычисляет оба элемента,getqне вычисляет второй элемент, аgetвычисляет оба.
get( sl_id S_name)
Возвращает значение свойства в списке свойств (включая или disembodiedpropertylists), ассоциативной таблице, структуре и объекте базы данных. Если свойства не существует, возвращаетnil. Используется вместе сputprop.putpropхранит свойство, аgetqqвозвращает его.
sl_id- символ или разрозненный список свойств
S_name- имя свойства, значение которого необходимо получить
Пример:
putprop( 'chip 8 'pins ) => 8
get( 'chip 'pins ) => 8
chip.pins => 8
x = '(nil a 3 b 4) ;a disembodied property list
x->a => 3
get(x 'a) => 3
getq(sl_id S_name)
getq(sl_id->s_name)
Возвращает значение свойства в списке свойств. Аналогична get, за исключением того, что второй аргумент не вычисляется. Это синтаксическая форма.
sl_id – символ или разрозненный список свойств.
S_name - имя свойства, значение которого необходимо получить.
Пример
putprop( 'chip 8 'pins ) => 8 ; Присваиваем свойству pins символа chip значение 8
getq( 'chip pins ) => 8
chip.pins => 8
chip1 = list(nil 'pins 10) => (nil pins 10)
chip1->pins => 10
Использование оператора стрелка и оператора присвоения для хранения свойств символа
С помощью оператора ->можно получить доступ к свойствам символа. (Можно получить свойства элемента косвенным образом) :
b = ‘a
a.x = 5
a.y = 10
b -> x
=> 5
b -> y
=>10
Для непрямой записи в список свойств используется оператор ( ->) и оператор (=):
b -> x = 25
a.x
=> 25
Это же можно сделать также и с помощью функции putpropq():
putpropq(sl_id g_value S_name)
Добавляет свойства символам или разрозненным спискам свойств. Аналогична putprop за исключением того, что аргумент s_name не вычисляем. Если свойство с таким именем уже существует, старое значение будет заменено новым.
sl_id – символ или разрозненный список свойств.
g_value – значение указанного свойства.
S_name - имя свойства.
Пример
putpropq('s 1+2 x) => 3
y = 'x => x
y->x = 1+2 => 3
;эквивалентные примеры.
Важно
Прикрепленные к символам списки свойств являются глобальными и видимыми для всех приложений. Даже если символ передается функцией, эта функция может добавлять или изменять свойства в списке свойств этого символа.
В следующем примере даже несмотря на то, что свойство устанавливается выражением let, оно все равно доступно вне выражения let. Другими словами, когда поток входных данных поступает и закрывается в выражениях let и prog, на список свойств локальных символов это не влияет.
x = 0
let( ( x )
x = 2
x.example = 5
) ; let
x => 0
plist( 'x ) => (example 5)