Встроенные классы
Встроенные классы - это классы, экземплярами которых являются объекты примитивных типов данных, такие как целые числа, строки, и т.п.
Имя класса | Описание | Литералы lsFusion |
---|---|---|
INTEGER | Четырехбайтное целое число | 5 , 23 , 1000000000 |
LONG | Восьмибайтное целое число | 5l , 23L , 10000000000000L |
DOUBLE | Восьмибайтное число с плавающей точкой | 5.0d , 2.35D |
NUMERIC[ , ] | Число с фиксированной разрядностью и точностью | 5.0 , 2.35 |
BOOLEAN | Логический тип данных | TRUE , NULL |
TBOOLEAN | Логический тип данных (3-значения) | TTRUE , TFALSE , NULL |
DATE | Дата | 13_07_1982 |
DATETIME | Дата и время | 13_07_1982_18:00 |
TIME | Время | 18:00 |
YEAR | Год | |
STRING , STRING[ ] | Строковый тип данных, при необходимости с максимальной длиной, зависимый от регистра | |
ISTRING , ISTRING[ ] | Строковый тип данных, при необходимости с максимальной длиной, независимый от регистра | |
BPSTRING[] | Строковый тип данн ых с максимальной длиной, зависимый от регистра, с пробелами в конце | 'text' , 'text with\nbreak' |
BPISTRING[] | Строковый тип данных с максимальной длиной, независимый от регистра, с пробелами в конце | |
TEXT | Строковый тип данных произвольной длины, зависимый от регистра | |
RICHTEXT | Строковый тип данных произвольной длины с форматированием | |
COLOR | Цвет | #00ссff , #AA55CC , RGB(0, 255, 0) |
JSON | JSON | {"a":["x","y","z"]} |
FILE | Файл динамического типа (содержимое файла вместе с его расширением) | |
NAMEDFILE | Файл динамического типа (содержимое файла вместе с его именем и расширением) | |
RAWFILE , WORDFILE , IMAGEFILE , PDFFILE , VIDEOFILE , DBFFILE , EXCELFILE , CSVFILE , HTMLFILE , JSONFILE , XMLFILE , TABLEFILE | Файлы конкретного типа (RAWFILE - файл без расширения / с неизвестным расширением) | |
LINK | Символьный идентификатор-ссылка на файл (URI) | |
RAWLINK , WORDLINK , IMAGELINK , PDFLINK , VIDEOLINK , DBFLINK , EXCELLINK , CSVLINK , HTMLLINK , JSONLINK , XMLLINK , TABLELINK | Символьный идентификатор-ссылка на файл конкретного типа (RAWLINK - ссылка на файл без расширения / с неизвестным расширением) |
Наследование
Среди всех встроенных классов можно выделить четыре семейства классов (будем считать, что каждый из остальных классов образует свое семейство классов)
Семейство классов | Описание |
---|---|
Числа | INTEGER , LONG , DOUBLE , NUMERIC [ , ] |
Строки | STRING , STRING[ ] , ISTRING , ISTRING[] , BPSTRING[ ] , BPISTRING[ ] , TEXT |
Файлы конкретного типа | RAWFILE, WORDFILE , IMAGEFILE , PDFFILE , VIDEOFILE , DBFFILE , EXCELFILE , CSVFILE , HTMLFILE , JSONFILE , XMLFILE , TABLEFILE |
Ссылки на файлы конкретного типа | RAWLINK , WORDLINK , IMAGELINK , PDFLINK , VIDEOLINK , DBFLINK , EXCELLINK , CSVLINK , HTMLLINK , JSONLINK , XMLLINK , TABLELINK |
Встроенные классы наследуют друг друга только в рамках одного семейства и не могут наследовать / наследоваться от пользовательских классов. Наследование в рамках одного семейства строится по принципу: более узкий класс наследуется от более широкого.
Общий предок
В соответствии с описанным механизмом наследования, общий предок двух встроенных классов (например для операции выбора) определяется следующим образом:
Строки
result = STRING[blankPadded = s1.blankPadded OR s2.blankPadded,
caseInsensitive = s1.caseInsensitive OR s2.caseInsensitive,
length = MAX(s1.length, s2.length)]
где blankPadded
, caseInsensitive
и length
, в свою очередь, определяются как:
Имя класса | blankPadded | caseInsensitive | length |
---|---|---|---|
STRING[n] | false | false | n |
ISTRING[n] | false | true | n |
BPSTRING[n] | true | false | n |
BPISTRING[n] | true | true | n |
TEXT | false | false | infinite |
Числа
IF p1.integerPart >= p2.integerPart AND p1.precision >= p2.precision
result = p1
ELSE IF p1.integerPart <= p2.integerPart AND p1.precision <= p2.precision
result = p2
ELSE IF p1.integerPart > p2.integerPart
result = NUMERIC[p1.integerPart+p2.precision, p2.precision]
ELSE
result = NUMERIC[p2.integerPart+p1.precision, p1.precision]
где integerPart
и precision
, в свою очередь, определяются как:
Имя класса | integerPart | precision |
---|---|---|
INTEGER | 10 | 0 |
DOUBLE | 99999 | 99999 |
LONG | 20 | 0 |
NUMERIC[l,p] | length-precision | precision |
Файлы конкретного типа
IF p1 = p2
result = p1
ELSE
result = RAWFILE
Ссылки на файлы конкретного типа
IF p1 = p2
result = p1
ELSE
result = RAWLINK
Отметим, что иногда в программировании определение общего родительского класса принято ассоциир овать с неявным приведением типов.
Значение по умолчанию
В некоторых случаях для встроенного класса необходимо использовать некоторое значение, которое будет заведомо отличаться от NULL
(например, в условии импорта при импорте данных). Это значение будем называть значением по умолчанию, и определяется оно следующим образом:
Имя класса | Значение по умолчанию |
---|---|
Числовые классы | 0 |
Строки | Пустая строка |
DATE, TIME, DATETIME | Текущие дата, время, дата / время |
BOOLEAN | TRUE |
COLOR | Белый цвет |
JSON | |
Файлы конкретного типа | Пустой файл |
FILE | Пустой файл с пустым расширением |
NAMEDFILE | Пустой файл с пустым именем и расширением |
Расширения файлов конкретного типа
При преобразовании файлов конкретного типа (JSONFILE
, XMLFILE
, ...) к файлу динамического типа (FILE
, NAMEDFILE
), как явном, так и неявном (например при импорте данных без указании формата или при взаимодействии с внешними системами) расширение результирующего файла определяется следующим образом:
Имя класса | Расширение |
---|---|
RAWFILE | Пустая строка |
JSONFILE | json |
XMLFILE | xml |
CSVFILE | csv |
WORDFILE | doc |
EXCELFILE | xls |
HTMLFILE | html |
PDFFILE | |
VIDEOFILE | mp4 |
DBFFILE | dbf |
IMAGEFILE | jpg |
TABLEFILE | table |
Порядок определения результирующего свойства при обращении из внешней системы
Имя класса | Имя свойства |
---|---|
FILE , NAMEDFILE , RAWFILE , WORDFILE , IMAGEFILE , PDFFILE , VIDEOFILE , DBFFILE , EXCELFILE , CSVFILE , HTMLFILE , JSONFILE , XMLFILE , TABLEFILE | exportFile , exportNamedFile , exportRawFile , exportWordFile , exportImageFile , exportPdfFile , exportVideoFile , exportDbfFile , exportExcelFile , exportCsvFile , exportHtmlFile , exportJsonFile , exportXmlFile |
TEXT , STRING , BPSTRING | exportText , exportString , exportBPString |
NUMERIC , LONG , INTEGER , DOUBLE | exportNumeric , exportLong , exportInteger , exportDouble |
DATETIME , DATE , TIME , YEAR | exportDateTime , exportDate , exportTime , exportYear |
LINK , RAWLINK , WORDLINK , IMAGELINK , PDFLINK , VIDEOLINK , DBFLINK , EXCELLINK , CSVLINK , HTMLLINK , JSONLINK , XMLLINK , TABLELINK | exportFile , exportRawFile , exportWordFile , exportImageFile , exportPdfFile , exportVideoFile , exportDbfFile , exportExcelFile , exportCsvFile , exportHtmlFile , exportJsonFile , exportXmlFile |
BOOLEAN , COLOR , JSON | exportBoolean , exportColor , exportJSON |
Пользовательские классы | exportObject |