XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Конвертируйте, пожалуйста, еще пару вопросов.
1.
Код:
struct xyz
 real z
 real y
 real z
endstruct

local xyz cord=xyz.create() // создать новый обьект
 set cord.x=1. // присвоить что то
 set cord.y=2.
 set cord.z=100500.
 call MyFunc(cord) // передать в функцию хендл обьекта
 call cord.destroy() // удалить обьект

В чем отличие от случая, если бы я просто использовал глобальные переменные?
2.
Цитата:
…структуры в вЖасс - просто форма работы с паматью…

2а. В каких случаях рациональнее использовать структуры, а в каких массивы?
2б. Структуры «понимают» какие-то отдельные типы переменных, или же все?

Вот в принципе и все. Структуры оказались легче для понимания, чем я предполагал. Спасибо всем, кто помог разобраться.
Старый 26.11.2008, 14:19
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Для интерпретатора различий нету ) Различия есть для тебя - в удобстве
Фактически в vJass структуры реализуются через массивы.
Насчет целесообразности - почитай теорию по ООП.
Структуры понимают все типы переменных но не могут содержать в себе массивов.
Старый 26.11.2008, 14:29
ScorpioT1000
Работаем
offline
Опыт: отключен
структуры - атд, массивы - стандартные, что непонятного?) ну т.е. структуры, если их понимать, дают более удобную реализацию задачи, но опять-же не везде =)

ScorpioT1000 добавил:
Цитата:
не могут содержать в себе массивов.

т.е.?
Старый 26.11.2008, 15:01
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
Van Damm
Цитата:
но не могут содержать в себе массивов.
очень болшой минус. К тому же в структуры нельзя запиывать обьектные типы (помоему). Хотя структуры удобнне простых массивов или кеша.
Старый 26.11.2008, 15:01
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Цитата:
ScorpioT1000 добавил:
Цитата:
не могут содержать в себе массивов.
т.е.?
т.к. члены структур хранятся в параллельных массивах, то другой массив не может быть членом структуры (мб векс исправил это в последних версиях, но вроде нет)

Цитата:
в структуры нельзя запиывать обьектные типы
false.
Старый 26.11.2008, 15:05
ScorpioT1000
Работаем
offline
Опыт: отключен
Цитата:
члены структур хранятся в параллельных массивах, то другой массив не может быть членом структуры (мб векс исправил это в последних версиях, но вроде нет)

а ну ты про vjass... даже по крайней мере объявлять в структуре их можно(ну и манипулировать), к примеру мы создаем в структуре "спелл" пачку снарядов
Старый 26.11.2008, 15:09
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Цитата:
а ну ты про vjass
ну вообще-то мы его обсуждаем ^^

Цитата:
даже по крайней мере объявлять в структуре их можно(ну и манипулировать)
ну вроде вот
Цитата:
Сообщение от JassHelper 0.9.E.0 Manual
So, you can declare struct members of any type, even struct types. You cannot however declare array members, this limitation should be removed in later versions.

Отредактировано Van Damm, 26.11.2008 в 15:50.
Старый 26.11.2008, 15:19
user_jasser

offline
Опыт: 232
Активность:
Цитата:
Структуры понимают все типы переменных но не могут содержать в себе массивов.


Цитата:
очень болшой минус. К тому же в структуры нельзя запиывать обьектные типы (помоему). Хотя структуры удобнне простых массивов или кеша.


осмелюсь поддержать дискуссию и опровергнуть эти два тезиса таким вот аргументом ...

Код:
type May2 extends May1 array[30]

struct May1
   private May2 mayArr
endstruct

.....

set this.mayArr[int] = May2.create()
Старый 26.11.2008, 15:30
J
expert
offline
Опыт: 48,447
Активность:
2Van Damm
Код:
struct Vector3
    real array coord[3]
    
    static method New takes real x, real y, real z returns Vector3
        local Vector3 this = Vector3.create()
        set .coord[0] = x
        set .coord[1] = y
        set .coord[2] = z
        return this
    endmethod

endstruct
Старый 26.11.2008, 15:41
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Да что вы на меня набросились, значит векс это исправил, а мануал не переписывал (просто мне самому пока не нужно было, вот и не знал точно) :P
Старый 26.11.2008, 15:48
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Я работал с массивами в структуре, правда они были статическими.
Старый 27.11.2008, 10:38
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Да вроде разобрались уже: у меня были устаревшие сведения =)
Старый 27.11.2008, 10:42
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от Линкольн 6 Эхо
В чем отличие от случая, если бы я просто использовал глобальные переменные?


Вот здесь рассматривались случаи использования. Также пару других интересных идей можно почерпнуть.

Советую тебе для начала изучить некоторые концепции ООП (классы, методы, статические методы), потому как лично для меня ничего полезного не оказалось в жассхэлпере.
Старый 27.11.2008, 11:27
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Ещё раз благодарю за помощь. Весь данный мне материал изучил – познавательно.
Последнее, что меня интересует, касательно vJass – это TextMacro.
Недавно прочел статью Jon’а «fsgui - создаем инвентарь», отличная скажу вам статья. В комментариях обнаружил вот такую строчку: «…куда правильнее делается на текстMACRO …». Хотелось бы увидеть пару примеров реализации этих слов. Хотя лично мне лицеприятней использовать строки, TextMacro все же изучить стоит.
Старый 27.11.2008, 20:18
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
В комментариях обнаружил вот такую строчку: «…куда правильнее делается на текстMACRO …». Хотелось бы увидеть пару примеров реализации этих слов. Хотя лично мне лицеприятней использовать строки
+1, игнорируй этот коментарий...
Старый 27.11.2008, 21:28
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Макросы, как и все остальные фичи vJass могут быть полезны при правильном подходе и уместном использовании.
Тем кто сталкивался с реальным программированием на C++, а не "игрушечным" на jass, все эти "фичи" давно знакомы, очень полезны и прятны.
Старый 27.11.2008, 22:38
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Ясно. Как сказал Дядя Федор: «Дальше я и своим ходом могу». Разберусь. Главное, что структуры усвоил. Спасибо что помогли.
Старый 27.11.2008, 22:47
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 12:16.