Argument implicit

În programare , argumentul implicit este un argument de funcție care este opțional atunci când este apelat. În majoritatea limbajelor de programare, funcțiile pot lua unul sau mai multe argumente. De regulă, toate argumentele trebuie specificate în întregime (ca în limbajul de programare C [1] ). Mai târziu, unele limbaje (de exemplu, C++ ) au permis programatorului să specifice valorile unor argumente în declarația funcției. Astfel, funcția ar putea fi apelată trecând doar argumentele necesare.

Argumente implicite în C++

Luați în considerare următoarea declarație a funcției:

int my_func ( int a , int b , int c = 12 );

Această funcție are trei argumente, ultimul dintre care are o valoare implicită de 12. Programatorul poate apela această funcție în două moduri:

rezultat = my_func ( 1 , 2 , 3 ); rezultat = my_func ( 1 , 2 );

În primul caz, valoarea argumentului c este determinată în apelul funcției și este egală cu trei. În al doilea caz, ultimul argument este omis și c va fi setat la doisprezece .

Argumentele implicite sunt setate începând de la ultimul argument.

Valorile implicite ale argumentului pentru metodele virtuale nu sunt determinate în timpul execuției de tipul obiectului, ci sunt luate din tipul pointerului. În acest exemplu, ecranul consolei va afișa 1 Derived:

clasa Baza { public : virtual void foo ( int x = 1 ) { std :: cout << x << "Baza" ; } }; clasa Derivată : Public Base { public : void foo ( int x = 2 ) override { std :: cout << x << „Derivat” ; } }; int main () { Baza * x = nou Derivat ; x -> foo (); // „1 Derivat” returnează 0 ; }

Pentru funcțiile membre, valorile implicite ale argumentului pot fi specificate în definiții. Astfel de funcții pot fi apelate cu valori implicite numai dacă definiția lor are loc înainte de apel. Exemplu:

struct C { void g ( int i , int j = 99 ); C ( int a ); }; C :: C ( int = 5 ) { } void C :: g ( int i = 88 , int j ) { }

Metode supraîncărcate

Alte limbi, cum ar fi Java , nu acceptă argumente implicite. Cu toate acestea, acest comportament poate fi reprodus folosind o supraîncărcare a metodei cu același nume și mai puține argumente:

int MyFunc ( int a , int b ) { return MyFunc ( a , b , 12 ); } int MyFunc ( int a , int b , int c ) { /* implementare principală */ }

Evaluare

Pentru fiecare apel de funcție, valorile implicite ale argumentului trebuie să fie transmise funcției apelate. Acest lucru duce la repetitivitate în cod. Argumentele implicite scapă pentru a evita acest lucru.

Dacă argumentul implicit nu este doar un literal, ci o expresie, atunci această expresie poate fi evaluată o dată pentru întregul program.

Python se remarcă prin faptul că evaluează expresiile din argumentele implicite o singură dată, în timpul încărcării modulului. Dacă doriți să evaluați o valoare în fiecare apel de funcție, puteți atribui o valoare de semnal argumentului, (de exemplu, Noneîn Python) și apoi, în prima linie a funcției, verificați-o.

De exemplu, argumentele implicite în Python pot fi implementate astfel:

import datetime def f ( a , b = None ): b = b sau datetime . datetime . acum ()

Link -uri

  1. Parametri impliciti . Data accesului: 13 ianuarie 2012. Arhivat din original pe 9 octombrie 2011.