Személyes eszközök
Keresés

 

A InfoWiki wikiből

(Változatok közti eltérés)
(Több értékkel visszatérő függvények)
(Több értékkel visszatérő függvények)
23. sor: 23. sor:
A több értékkel visszatérés egyik (legprimitívebb) megközelítésében egy (a legfontosabb) értéket a függvény adja vissza, a többi értéket visszatérése előtt helyezze el globális statikus változókba, ahonnan a hívó kód ki tudja (utólag bármikor) olvasni.  
A több értékkel visszatérés egyik (legprimitívebb) megközelítésében egy (a legfontosabb) értéket a függvény adja vissza, a többi értéket visszatérése előtt helyezze el globális statikus változókba, ahonnan a hívó kód ki tudja (utólag bármikor) olvasni.  
-
Másik lehetésges megoldása, hogy kimenő (out) vagy átmenő (ref) paramétereken keresztül adunk vissza értékeket (ezekből tetszőlegesen sokat).  
+
Másik lehetséges megoldás, hogy kimenő (out) vagy átmenő (ref) paramétereken keresztül adunk vissza értékeket (ezekből tetszőlegesen sokat).  
== Több érték visszaadása vektorral ==
== Több érték visszaadása vektorral ==

A lap 2009. december 5., 08:45-kori változata


Több értékkel visszatérő függvények

Amennyiben valamely függvényünk nem egy, hanem mindjárt kettő vagy több értéket is előállít, úgy első pillantásra reménytelen helyzetbe kerülünk. A függvények ugyanis vagy nulla darab (void), vagy egy darab (adott típusú) értékkel képesek csak visszatérni, több visszatérési értékkel nem!

Felmerült egyszer a megoldási lehetőségek boncolgatása közben, hogy egymás után több return-t is adjunk ki a függvényben, így oldjuk meg a több értékes visszatérést. A return-ból többet lehet írni egy függvény törzsébe, de ezek közül csak az egyik hajtódhat végre konkrét lefutáskor. Az első return hatására ugyanis a függvény futása azonnal befejeződik, és visszatérünk a hívás helyére.

A több értékkel visszatérés egyik (legprimitívebb) megközelítésében egy (a legfontosabb) értéket a függvény adja vissza, a többi értéket visszatérése előtt helyezze el globális statikus változókba, ahonnan a hívó kód ki tudja (utólag bármikor) olvasni.

Másik lehetséges megoldás, hogy kimenő (out) vagy átmenő (ref) paramétereken keresztül adunk vissza értékeket (ezekből tetszőlegesen sokat).

Több érték visszaadása vektorral

Lehetőség van azonban olyan függvény írására is, amely nem egyszerű, hanem összetett adattípusú visszatérési értékkel rendelkezik (pl. tömb, lista, rekord).

static int[] megszamol(int[] t)
{
  int[] r = new int[2];
  foreach(int x in t)
  {
    if (x%2==0 && x>20) r[0]++;
    if (x%2==1 && x<30) r[1]++;
  }
  return r;
}

Ebben a példában egyszerre számoltuk meg a páros és 20-nál nagyobb elemek számát, illetve a páratlan és 30-nál kisebb elemek számát. A visszatérés során egy kételemű vektort (pontosabban annak memóriacímét) adjuk vissza. Hívása:

int[] l = new int[30];
for(int i=0;i<l.Length;i++) 
  l[i]=rnd.Next(10,100);
 
int[] k = megszamol(l);
Console.WriteLine("paros, nagyobb 20 => {0}",k[0]);
Console.WriteLine("paratlan, kisebb 20 => {0}",k[1]);
Hernyák Zoltán
A lap eredeti címe: „http://wiki.ektf.hu/wiki/Mp1/page540
Nézetek
nincs sb_3.14.70.203 cikk