Udostępnij za pośrednictwem


Parametry odrzucenia lambda

Notatka

Ten artykuł jest specyfikacją funkcji. Specyfikacja służy jako dokument projektowy dla funkcji. Zawiera proponowane zmiany specyfikacji wraz z informacjami wymaganymi podczas projektowania i opracowywania funkcji. Te artykuły są publikowane do momentu sfinalizowania proponowanych zmian specyfikacji i włączenia ich do obecnej specyfikacji ECMA.

Mogą wystąpić pewne rozbieżności między specyfikacją funkcji a ukończoną implementacją. Te różnice są przechwytywane w odpowiednich spotkania projektowego języka (LDM).

Więcej informacji na temat procesu wdrażania specyfikacji funkcji można znaleźć w standardzie języka C# w artykule dotyczącym specyfikacji .

Streszczenie

Zezwalaj na użycie odrzuconych wartości (_) jako parametrów w wyrażeniach lambda i metodach anonimowych. Na przykład:

  • lambdy: (_, _) => 0, (int _, int _) => 0
  • metody anonimowe: delegate(int _, int _) { return 0; }

Motywacja

Nieużywane parametry nie muszą być nazwane. Cel odrzutów jest jasny, tj. są one nieużywane/odrzucane.

Szczegółowy projekt

Parametry metody — §15.6.2 Na liście parametrów metody lambda lub anonimowej z więcej niż jednym parametrem o nazwie _takie parametry są odrzucane. Uwaga: jeśli pojedynczy parametr ma nazwę _ jest to zwykły parametr ze względów zgodności z poprzednimi wersjami.

Odrzuć parametry nie powodują wprowadzenia żadnych nazw do żadnych zakresów. Należy pamiętać, że nie powodują one ukrycia nazw _ (podkreślnik).

Proste nazwy (§12.8.4) Jeśli wynosi zero, a prosta_nazwa pojawia się w bloku i jeśli blok (lub otaczający blok ) przestrzeni deklaracji lokalnych zmiennych (Deklaracje - §7.3) zawiera lokalną zmienną, parametr (z wyjątkiem odrzucanych parametrów) lub stałą o nazwie , wówczas prosta_nazwa odnosi się do tej lokalnej zmiennej, parametru lub stałej i jest klasyfikowana jako zmienna lub wartość.

Zakresy — §7.7 Z wyjątkiem parametrów odrzucenia, zakres parametru zadeklarowanego w lambda_expression (§12.19) jest anonymous_function_body tego lambda_expression Z wyjątkiem parametrów odrzucenia zakres parametru zadeklarowanego w anonymous_method_expression (§12.19) jest blok tego anonymous_method_expression.