Что нового

Объявление аргумента в Global

DeLeTeSHift

Знающий
Сообщения
46
Репутация
9
Столкнулся с такой проблемой, что аргумент нельзя объявить внутри функции, и поэтому нельзя использовать в другой функции. Например:
Код:
test1()
test2()

Func test1($i = 1)
 MsgBox(0, "", $i)  
EndFunc

Func test2()
   Global $i
   MsgBox(0, "", $i)
EndFunc

Как сделать что бы аргумент из первой функции использовался во второй?
P.S. Ввод аргумента во вторую функцию ещё раз крайне не рационален, и не может быть использован
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
Global $i=1
test1()
test2()

Func test1()
 MsgBox(0, "", $i)  
EndFunc

Func test2()   
   MsgBox(0, "", $i)
EndFunc
 
Автор
D

DeLeTeSHift

Знающий
Сообщения
46
Репутация
9
sngr, ты ведь просто удалил аргумент, а надо что бы при вызове этой функции а мог его ввести, и он бы использовался в этой функции, а потом и во второй
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
DeLeTeSHift
Код:
$var = test1()
test2($var)

Func test1($i = 1)
 MsgBox(0, "test1", $i)  
 Return $i
EndFunc

Func test2($i)

   MsgBox(0, "test2", $i)
EndFunc
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
DeLeTeSHift
В функциях всегда создаются локальные переменные, если они небыли объявлены вне функции.
Т.е. Global внутри функции работает как Local, если ранее эта переменная не была объявлена.

(ИМХО)
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
DarWiM
Цитата: Yashied от Декабрь 23, 2011, 13:43:14
Global - объявление глобальных переменных, т.е. эти переменные действительны в любое время и в любом месте кода, в том числе и в функциях. Сохраняются на все время работы кода или до тех пор, пока вы сами их не уничтожите.

Local - объявление локальных переменных. Используется только внутри функций. Такие переменные действительны только внутри той функции, в которой были объявлены, и будут автоматически уничтожены после выхода из этой функции.

Если Local стоит не внутри функции, а в теле основного кода, то это эквивалентно Global, но является плохим стилем написания кода.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
DeLeTeSHift
sngr, ты ведь просто удалил аргумент, а надо что бы при вызове этой функции а мог его ввести, и он бы использовался в этой функции, а потом и во второй
А кто запрещает его вводить? Только не в функцию, а в саму переменную. Глобальные переменные передавать контпродуктивно, они и так видны функции и в любом участке кода.
 
Верх