NIE UŻYWAJ DO USŁUGI AWS (do tych pytań użyj [aws-lambda!) Lambda to anonimowe funkcje lub zamknięcia w językach programowania, takich jak Lisp, C #, C ++, Lua, Python, Ruby, JavaScript lub Java. (Również wyrażenie lambda.)
Miałem wrażenie, że typ lambda to wskaźnik funkcji. Kiedy wykonałem następujący test, stwierdziłem, że jest źle ( demo ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) == typeid(pAuto)); // …
sort(mMyClassVector.begin(), mMyClassVector.end(), [](const MyClass & a, const MyClass & b) { return a.mProperty > b.mProperty; }); Chciałbym użyć funkcji lambda do sortowania niestandardowych klas zamiast wiązania metody instancji. Jednak powyższy kod powoduje błąd: błąd C2564: „const char *”: konwersja stylu funkcji na typ wbudowany może przyjąć tylko jeden argument Działa …
Właśnie zacząłem patrzeć na Javę 8 i wypróbować lambdy, pomyślałem, że spróbuję przepisać bardzo prostą rzecz, którą niedawno napisałem. Muszę przekształcić Map of String to Column w inną Map of String to Column, gdzie kolumna w nowej mapie jest obronną kopią kolumny z pierwszej mapy. Kolumna ma konstruktora kopiującego. Najbliższe, …
Mam następujący kod: Func<string, bool> comparer = delegate(string value) { return value != "0"; }; Jednak następujące elementy nie są kompilowane: var comparer = delegate(string value) { return value != "0"; }; Dlaczego kompilator nie może dowiedzieć się, że jest to plik Func<string, bool>? Pobiera jeden parametr łańcuchowy i zwraca …
Pracowałem z nowym typem opcjonalnym w Javie 8 i natknąłem się na coś, co wygląda na typową operację, która nie jest obsługiwana funkcjonalnie: „orElseOptional” Rozważ następujący wzór: Optional<Result> resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional<Result> resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); } Istnieje …
Odpowiadałem na pytanie o możliwość domknięć (uzasadnionych) wydłużania czasu życia obiektów, kiedy natknąłem się na jakiś niezwykle ciekawy gen kodu ze strony kompilatora C # (4.0, jeśli to ma znaczenie). Najkrótsza reprodukcja, jaką mogę znaleźć, jest następująca: Utwórz lambdę, która przechwytuje lokalną podczas wywoływania metody statycznej typu zawierającego. Przypisz wygenerowane …
Czy biorąc pod uwagę lambdę, można określić typ jej parametru i typ zwracany? Jeśli tak, w jaki sposób? Zasadniczo chcę, aby lambda_traitsmożna było używać na następujące sposoby: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long Motywacją jest …
Czy wyrażenie lambda języka C # może zawierać więcej niż jedną instrukcję? (Edytuj: jak wspomniano w kilku poniższych odpowiedziach, to pytanie pierwotnie dotyczyło „wierszy”, a nie „stwierdzeń”).
Czytając specyfikację Java-8, wciąż widzę odniesienia do „typów SAM”. Nie udało mi się znaleźć jasnego wyjaśnienia, co to jest. Co to jest typ SAM i jaki jest przykładowy scenariusz, kiedy można go użyć?
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 1 rok temu . Popraw to pytanie Pracowałem z delegatami akcji w języku C # w nadziei, że dowiem …
Google Guava ma predykat, który zawsze zwracatrue . Czy Java 8 ma coś podobnego Predicate? Wiem, że mógłbym użyć (foo)->{return true;}, ale chcę coś gotowego, analogicznego do Collections.emptySet().
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 i nowsze wydrukuj "Używasz clang ++!" i ostrzegaj o niewykorzystaniu przechwytywania foo . g ++ 4.9.0 i nowsze wydrukuj "Używasz g ++!" i ostrzec o nieużywanym parametrze foo . Który …
Rozważ ten dość bezużyteczny program: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Zasadniczo próbujemy utworzyć lambdę, która sama się zwraca. MSVC kompiluje …
Kiedy używam [=] aby wskazać, że chciałbym, aby wszystkie zmienne lokalne były przechwytywane przez wartość w lambdzie, czy spowoduje to wszystkie zmienne lokalne w kopiowanej funkcji, czy tylko wszystkie zmienne lokalne, które są używane przez lambdę ? Na przykład, jeśli mam: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return my_measly_int + …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.