2015-05-23 53 views

回答

5

在一個非常高的層次上,是的,他們是:這兩個塊和lambdas據說執行closures。非常非正式地,它們用於將可執行邏輯與邏輯運行的數據「打包」在一起,以便將其傳遞或存儲用於延遲執行。

但是,當您進入塊的實現和圍繞它們的語言時,存在許多重要差異。

例如,Java中的lambdas可以被認爲是創建實現單一方法接口的匿名內部類的快捷方式。一個實現相同接口的類的對象可以到達lambda可以到達的任何地方。

相比之下,Objective-C中的塊與協議(可以認爲是Java接口的對應部分)是分離的概念。如果使用塊類型的參數聲明方法,則必須爲其提供塊;你不能用一個非塊對象代替一個塊。

相關問題