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

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

Закрытая тема
 
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
Помогите с кодом
Помогите укоротить следующий код:
Код:
function GetItem takes integer raw returns integer
 if raw == 'I000' then
  return 1
 endif
 if raw == 'I001' then
  return 2
 endif
 ...
 ...
 if raw == 'In' then
  return n + 1
 endif
 return 0
endfunction

n - это любое число.
Допустим что таких вот конструкций IF у меня 500 и не прописывать же мне их все вручную?!
Старый 15.06.2009, 14:54
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Код:
function GetItem takes integer raw returns integer
  return raw - 0x4930302F
endfunction

либо
Код:
function GetItem takes integer raw returns integer
  if raw >= 'I000' and raw <= 'I123' then
    return raw - 'I000' + 1
    // return raw - 0x4930302F
  endif
  return 0
endfunction

0x4930302F идентично 'I000' - 1 (насколько я помню по значениям Hex-таблицы).

Отредактировано ShadoW DaemoN, 15.06.2009 в 16:31.
Старый 15.06.2009, 15:14
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
ShadoW DaemoN, а можно объяснить. Просто я немного непонял
Старый 15.06.2009, 17:35
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Если изучить функцию, то можно увидеть закономерность, что разность между равкодом ('I000', 'I001', 'I002'...) и возвращаемым числом (1, 2, 3) равна всегда числу <'I000'-1>. Значит, чтобы получить нужное число, нужно взять равкод и вычесть из него <'I000'-1>.
Другими словами, это обычная линейная зависимость y (результата функции) от x (равкода предмета). Такое в школе обычно проходят...
Старый 15.06.2009, 18:23
ScorpioT1000
Работаем
offline
Опыт: отключен
советую автору почитать статью Адика про число Integer в варе
Старый 15.06.2009, 23:25
Закрытая тема

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

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

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

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



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