->
jest dosłowna składnia, jak "
. Jego znaczenie jest ustalone przez specyfikację językową.
Kernel#lambda
to metoda, jak każda inna metoda. Może on zostać zastąpiony, usunięty, zastąpiony, niedopowiedziany, przechwycony ...
Tak więc, semantycznie, są one bardzo różne.
Jest również możliwe, że ich wydajność jest inna. Kernel#lambda
będzie co najmniej mają narzut wywołania metody. Fakt, że silnik wykonawczy nie może w rzeczywistości wiedzieć, co zrobi Kernel#lambda
w czasie wykonywania (ponieważ może to być monkeypatched) również wykluczałby jakiekolwiek statyczne optymalizacje, chociaż nie wierzę, że jakikolwiek istniejący silnik wykonujący Ruby statycznie optymalizuje literały lambda w jakikolwiek znaczący sposób.