vJass

Содержание:

Вы можете импортировать в свой код данные из внешних SLK-файлов таблиц в структуры. Это бывает действительно удобно в системах, использующих базы данных. Формат SLK очень прост , а их использование может избавить вас от необходимости вручную редактировать код структуры.
Препроцессор импорта SLK-файлов имеет следующий синтаксис:
//! loaddata "path.slk" 
чей принцип работы схож с препроцессором импорта..
Для успешного импорта данных, SLK таблицы и структуры должны следовать следующим правилам:

Для SLK

В SLK-файле, 1й столбец в 1й строке должен иметь имя, идентичное имени структуры, в которую данные импортируются. Каждый последующий столбец в 1й строке содержит имя атрибута структуры, в которые данные будут загружены.
Первый столбец каждой последующий строки содержит ключ, по которому данные будут получены из структуры.
Nameabcde
123456
789101112
В примере выше, имя структуры, в которую данные будут импортированы - Name. Имена атрибутов структуры, в которые данные будут загружены - a, b, c, d, e. Ключи, по которым данные будут получены - 1 и 7.

Для структур

Структура, в которую данные будут импортированы (из примера выше, структура Name) должна определять статичный метод getFromKey, который вернет значения типа структуры.
Задача статичного метода getFromKey в простом преобразовании значении ключа (что принимается в качестве аргумента) в эквивалентную структуру. В нашем примере, метод getFromKey должен принимать аргумент в виде целочисленного значения.
Структура так же должна содержать атрибуты, указанные в импортируемом SLK-файле, но не обязывает указывать непременно все.
Итак, если мы имеет структуру вида
struct Name
    integer a
    integer b
    integer c
    integer d
    integer e

    static Name array values

    static method getFromKey takes integer i returns Name
        if (Name.values[i]!=0) then
            set values[i] = Name.create()
        endif
        return Name.values[i]
    endmethod
endstruct
и в то же время импортируем таблицу формата SLK, код инициализации структуры примет следующий вид:
    set s = Name.getFromKey(1)
    set s.a = 2
    set s.b = 3
    set s.c = 4
    set s.d = 5
    set s.e = 6
    set s = Name.getFromKey(7)
    set s.a = 8
    set s.b = 9
    set s.c = 10
    set s.d = 11
    set s.e = 12
Обратите внимание, что данный код будет выполнен уже после инициализации структур и библиотек.
Для лучше понимания, взгляните на пример импорта SLK, в составе дистрибутива JassHelper.

`
ОЖИДАНИЕ РЕКЛАМЫ...