比較Lambda:全面概述
簡介
Lambda閉包,因其簡潔性和表達性而廣泛應用於現代程式語言。但是,可能會出現需要比較兩個 lambda 的情況,無論是功能等效性還是同一性。
規範與實作角度
從語言規範角度,保證 lambda 表達式建立實現目標函數式介面的類別的實例。但是,這些實例的唯一性或別名未指定,從而為實作提供了靈活性。
實現注意事項
目前,lambda 表達式實現在合成類(產生以實現 lambda)並捕獲程式中的站點。在不同站點捕獲的兩個 lambda,即使功能相同,也可以使用不同的類別來實現。但是,對於在同一捕獲位點評估的非捕獲 lambda,引用相等 (==) 意味著功能等效。
替代方法
限制
為 lambda 建立函數相等本質上是具有挑戰性的。兩個 lambda 可能在功能上相同,但如果它們不是在同一捕獲位點求值或轉換為不同的函數介面類型,則無法保證引用相等。
toString 注意事項
Java 專家小組 (EG) 內部一直在討論如何為 lambda 提供更具描述性的 toString 實作。不過,目前還沒有明確的結論,這仍然是未來考慮的話題。
以上是兩個 Lambda 何時表現相同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!