Lambda 忽略參數
注意
本文是功能規格。 規格可作為功能的設計檔。 其中包含建議的規格變更,以及功能設計和開發期間所需的資訊。 這些文章會發佈,直到提議的規格變更完成並併併入目前的ECMA規格為止。
功能規格與已完成實作之間可能有一些差異。 這些差異是在 語言設計會議(LDM)的相關紀錄中擷取的。
總結
允許將忽略符號(_
)用作 Lambda 和匿名方法的參數。
例如:
- lambdas:
(_, _) => 0
、(int _, int _) => 0
- 匿名方法:
delegate(int _, int _) { return 0; }
動機
未使用的參數不需要命名。 捨棄的意圖是清楚的,也就是它們未被使用/被捨棄。
詳細設計
方法參數 - §15.6.2 在 lambda 或匿名方法的參數清單中,具有多個參數且這些參數名為 _
,這類參數是捨棄參數。
注意:如果單一參數命名為 _
則為一般參數,因為回溯相容性原因。
捨棄參數不會將任何名稱引入至任何範圍。
請注意,這表示它們不會隱藏任何 _
(下劃線)名稱。
簡單名稱(§12.8.4)如果 K
為零,且 simple_name 出現在 區塊 中,而且如果 區塊的(或封入 區塊的)局部變數宣告空間(宣告 - §7.3)包含局部變數、參數(除了捨棄參數之外)或名稱為 I
的常數,那麼,simple_name 會參考該局部變數、參數或常數,並分類為變數或值。
範圍 - §7.7 除了捨棄參數之外,lambda_expression 中宣告的參數範圍(§12.19)是該 lambda_expression 的 anonymous_function_body。除了捨棄參數之外,anonymous_method_expression 中宣告的參數範圍(§12.19)是該 anonymous_method_expression的 區塊。
相關規格區段
- 對應參數 - §12.6.2.2