Объясните, пожалуйста, максимально по простому, в чём их различия?
Сколько читаю - в одно ухо влетает, через другое вылетает, чувство тупости не покидает меня
Понял только, что она как глобалка, создаётся один раз и... что, зачем? Почему просто глобалку не создать тогда?
+
"Добавляя ключевое слово static к глобальной переменной, мы определяем её как внутреннюю, то есть такую, которую нельзя экспортировать и использовать в других файлах."
А private|public не то же самое делают?

Принятый ответ

Почему просто глобалку не создать тогда?
Потому что это глобалка, которая связана с конкретной структурой
Добавляя ключевое слово static к глобальной переменной, мы определяем её как внутреннюю, то есть такую, которую нельзя экспортировать и использовать в других файлах
Можно
struct AAA
    static integer I = 1
endstruct

function BBB takes nothing returns nothing
    local integer i = AAA.I
    call DisplayTextToPlayer(Player(0), 0, 0, I2S(i))
endfunction
А private|public не то же самое делают?
Это модификаторы доступа. Вот так уже не сработает
struct AAA
    private static integer I = 1
endstruct

function BBB takes nothing returns nothing
    local integer i = AAA.I
    call DisplayTextToPlayer(Player(0), 0, 0, I2S(i))
endfunction

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
3 года назад
Отредактирован rsfghd
0
Ладно, видимо просто пока что не знаю где это применимо
Оставлю разборчивую ссылку
1
28
3 года назад
1
rsfghd, причём тут вообще C++ к vJass?
Добавляя ключевое слово static к глобальной переменной, мы определяем её как внутреннюю, то есть такую, которую нельзя экспортировать и использовать в других файлах
Это вообще откуда?
0
27
3 года назад
Отредактирован rsfghd
0
PT153, оттуда же, но я так понял в джассе это блоки функций, библиотек, структур и т.д.
причём тут вообще C++ к vJass?
О vJass'e я ничего толком не знаю
Ну за с++ я ничего не хотел говорить, там просто есть толковый пример, который можно перенести на джасс
код
nothing incrementAndPrint()
{
    static integer s_value = 1 // переменная s_value является статической
    BJDebugMsg(I2S(s_value))
    ++s_value
} // переменная s_value не уничтожается здесь, но становится недоступной
 
nothing cc()
{
    incrementAndPrint()
    incrementAndPrint()
    incrementAndPrint()
}
0
18
3 года назад
Отредактирован PT153
0
Почему просто глобалку не создать тогда?
Потому что это глобалка, которая связана с конкретной структурой
Добавляя ключевое слово static к глобальной переменной, мы определяем её как внутреннюю, то есть такую, которую нельзя экспортировать и использовать в других файлах
Можно
struct AAA
    static integer I = 1
endstruct

function BBB takes nothing returns nothing
    local integer i = AAA.I
    call DisplayTextToPlayer(Player(0), 0, 0, I2S(i))
endfunction
А private|public не то же самое делают?
Это модификаторы доступа. Вот так уже не сработает
struct AAA
    private static integer I = 1
endstruct

function BBB takes nothing returns nothing
    local integer i = AAA.I
    call DisplayTextToPlayer(Player(0), 0, 0, I2S(i))
endfunction

Принятый ответ
2 комментария удалено
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.