локальная переменная и возвращаемое значение функции в пакете windows - PullRequest
0 голосов
/ 04 апреля 2019
@echo off

set /a n=99

echo before call test3
echo n=%n%

set ret=
call :test3 ret

echo after call test3
echo n=%n%

echo show array:
echo %ret.Array[0]%
echo %ret.Array[1]%
echo %ret.Array[2]%
echo %ret.Array[3]%

ECHO Press any key to close the windows...
pause>NUL
goto :eof

:test3
setlocal
set /a n=0

:Loop-Start
if %n% GEQ 3 goto :Loop-End

endlocal

set %~1.Array[%n%]=V%n%

setlocal

set /a n=n+1

goto :Loop-Start
:Loop-End

endlocal
goto :eof

Привет,

Я написал функцию test3 с локальной переменной с именем n, и test3 получает ссылку на переменную с именем ret от вызывающей стороны в качестве ее параметра.

Как я показываю в коде, я хочу, чтобы мой test3 создал массив из трех элементов, а переменная с именем ret в вызывающей программе будет содержать массив.

Но в вызывающей программе при печати массива я обнаружил, что у меня нет трех элементов в массиве.

кто может помочь? спасибо

1 Ответ

0 голосов
/ 06 апреля 2019

Решено. Ниже приводится рабочий код для подпрограммы test3:

:test3

setlocal EnableDelayedExpansion
set /a n=0

for /l %%i in (0,1,3) do (
   set s1=V!n!

   if defined _ret (
      set _ret=!_ret! ^& 
   )
   set _ret=!_ret!set %~1.Array[!n!]=V!n!

   set /a n=n+1
)

(
   endlocal
   %_ret%
)
goto :eof

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...