Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: arma on October 24, 2021, 04:24:14 AM

Title: Как организовать подпрограмму обработки массива? (передать массив в подпрограмму
Post by: arma on October 24, 2021, 04:24:14 AM
Каким образом передать массив в подпрограмму?
Псевдокод того что хотелось бы:
Code: [Select]
define($array1)
define($array2)

//как-то заполняем оба массива

my_subr_process($array1) //обрабатываем первый массив
my_subr_process($array2) //той же процедурой обрабатываем второй массив
my_print($array1)
my_print($array2)
Насколько я понимаю, в подпрограммы параметрами передавать можно только элементарные типы. А если указать массив, передаётся первый элемент.
Можно было бы передать массив через глобальную переменную, но тогда перед вызовом надо скопировать в эту переменную, а потом копировать обратно. Выглядит тяжеловато, особенно если вызываемая подпрограмма - однострочник.
Title: Re: Как организовать подпрограмму обработки массива? (передать массив в подпрограмму
Post by: ya12 on October 24, 2021, 03:05:14 PM
Только поэлементным копированием в цикле, потому что в КМ массивы - динамические. При копировании теряется размер массива и все элементы после первого.

В КМ нет локальных переменных. Все переменные глобальны, из-за этого приходиться для каждого потока делать свою подпрограмму с уникальными названиями. Или делать так чтобы запуск подпрограммы не пересекался во времени в разных потоках
 
Title: Re: Как организовать подпрограмму обработки массива? (передать массив в подпрограмму
Post by: arma on October 24, 2021, 04:14:30 PM
Если делать передачу через глобальные переменные, возможно ли сделать переименование переменной или ссылку на переменную?
Например в основной программе у меня $array,  а в подпрограмме $subr_array:
Code: [Select]
rename_variable($array,$subr_array)
my_subr_process()
rename_variable($subr_array,$array)
или
Code: [Select]
$subr_array=link_to_variable($array)
my_subr_process()
unlink($subr_array)
Title: Re: Как организовать подпрограмму обработки массива? (передать массив в подпрограмму
Post by: ya12 on October 24, 2021, 08:28:57 PM
Нет такого функционала.
Title: Re: Как организовать подпрограмму обработки массива? (передать массив в подпрограмму
Post by: dramster on October 25, 2021, 08:26:19 AM
В v4.14.003 есть ARRCONCAT. Смотрите в справке как он работает. Как раз для таких случаев.