Author Topic: Сократить текст скрипта вызова рандомной функции  (Read 1366 times)

0 Members and 2 Guests are viewing this topic.

hoho1

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Имеем
Code: (clickermann) [Select]
$choice= RND (1, 20)
if ($choice=1)
promo_1 ()
end_if

......

if ($choice=20)
promo_20 ()
end_if

Попытка подставить вместо имени подпрограммы конструкцию
STRCONCAT("promo_", $choice)
не сработала.
Можно ли как-то прописАть вызов рандомной подпрограммы не повторяя двадцать раз конструкцию if....end-if
Спасибо
« Last Edit: December 28, 2016, 02:55:02 PM by hoho1 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Потому что вызов подпрограммы это команда, а не строка.
В любом случае нужно будет условиями делить. Удобней через SWITCH
Code: (clickermann) [Select]
SWITCH($choice)
CASE(1)
    promo_1()
CASE(2)
    promo_2()
   
    ...........
   
CASE(20)
    promo_20()
END_SWITCH

Кстати, у тебя скобок в вызовах не хватает


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
А что подпрограммы совсем совсем разные? Если нет, может там часть параметров только менять от варианта?


hoho1

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Да, к сожалению подпрограммы все разные, посему просто изменением входных параметров не отделаться.
Со скобочками протупил, уже добавил.

hoho1

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
В любом случае нужно будет условиями делить
Тогда другого выхода не остается, только вынести выбор и набор подпрограмм в отдельный SUB, чтобы не загромождать текст основного скрипта.
Code: (clickermann) [Select]
$choice= RND (1, 20)
promo ($choice)