Podstawy MetaQuotes Language 4-Zmienne-Parametry wywołania funkcji w Forex-Słownik poleceń MQL4 - bossa.pl
2017.12.17, godz. 03:23

Parametry wywołania funkcji

Parametry przekazywane do funkcji są lokalne. Zakres widoczności, dostępu do tych parametrów jest w zakresie bloku funkcji. Każdy parametr musi mieć swoją niepowtarzalną nazwę w zakresie bloku funkcji i nie może być taka sama jak nazwy zmiennych lokalnych tej funkcji.

 

Przykład:

void funkcja (int x[], double y, bool z)
{
if ( y > 0.0 && !z )
Print( x[0] );
}

 

Przekazywane parametry do funkcji mogą być inicjowane domyślnymi wartościami. Wyjątkiem są funkcje wywoływane pomiędzy modułami, gdzie nie można stosować parametwów domyślnych.

 

Przykład:

void funcja(int x, double y = 0.0, bool z = true)
{
if ( !z )
Print( y );
}
// możliwe sposoby wywołanie funkcji
funkcja(123);
funkcja(123, 0.1);
funkcja(123, 0.2, false);

 

Parametry mogą być przekazywane do funkcji przez wartość lub przez referencje. Przekazanie przez wartość oznacza, że funkcja nie ma możliwości modyfikacji tych parametrów w bloku wykonywalnym funkcji, w rzeczywistości funkcja pobiera kopie parametrów, natomiast przekazuje parametr przez referencje. Funkcja może zmodyfikować ten parametr, inaczej mówiąc funkcja operuje na rzeczywistej zmiennej, a nie na jej kopi. Aby przekazać parametry przez referencje wystarczy poprzedzić je znakiem ampersand (&), ponieważ domyślnie parametry przekazywane są przez wartość. Możliwe jest przekazywanie tablice, jako parametrów funkcji.Przekazuje się jednak całe tablice i nie ma możliwości przekazywania pojedynczych elementów tablicy. Parametry przekazywane przez referencję mogą być tylko w zakresie jednego modułu funkcjonalnego i nie mogą być przekazywane np. do funkcji znajdujących się w bibliotekach lub pomiędzy EA i wskaźnikiem. Przekazując parametry przez referencje nie możemy stosować wartości domyślnych.

 

 

Przykład:

// parameter przekazywane przez wartość
double funkcja(int x, double y, double z[])
{
double oblicz_tp;
for (int i=0; i < OrdersTotal(); i++)
{
if (i == ArraySize (z)) break;
if (OrderSelect(i) == false) break;
return ( OrderOpenPrice() );
}
}


// parametry przekazywane przez referencje
void funkcja(int & x, double & y, double & z[])
{
double oblicz_tp;
for (int i=0; i < OrdersTotal(); i++)
{
if (i == ArraySize (z)) break;
if (OrderSelect(i) == false) break;
z[i] = OrderOpenPrice();
}
x = i;
y = oblicz_tp;
}

 

bos bank logo
Grupa kapitałowa
Nagroda specjalna i tytuł BROKERA ROKU 2015
Nagroda specjalna i tytuł BROKERA
ROKU 2015, przyznane przez GPW.

logo_FMR2017aktualny.jpg Finansowa Marka Roku: wyrazista marka promująca edukację, umocnienie pozycji lidera rynku kontraktów terminowych.

nagroda najlepszy dom maklerski 2015
Najwyższa ocena dla DM BOŚ w ankiecie czytelników Gazety Giełdy Parkiet 2015r.