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.)
Wybierz metodę System.Windows.Forms.Control.Invoke (metoda delegata) Dlaczego powoduje to błąd czasu kompilacji: string str = "woop"; Invoke(() => this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type Ale to działa dobrze: string str = "woop"; Invoke((Action)(() => this.Text = str)); …
Jak widać w poniższym kodzie, zadeklarowałem plik Action<> obiekt jako zmienną. Czy ktoś mógłby mi powiedzieć, dlaczego ten delegat metody akcji zachowuje się jak metoda statyczna? Dlaczego powraca truew poniższym kodzie? Kod: public static void Main(string[] args) { Action<string> actionMethod = s => { Console.WriteLine("My Name is " + s); …
Kotlin ma bardzo ładne funkcje iteracyjne, takie jak forEachlub repeat, ale nie jestem w stanie zmusić operatorów breaki do continuepracy z nimi (zarówno lokalnymi, jak i nielokalnymi): repeat(5) { break } (1..5).forEach { continue@forEach } Celem jest naśladowanie zwykłych pętli przy możliwie najbliższej składni funkcjonalnej. Z pewnością było to możliwe …
Chciałbym zduplikować strumień Java 8, abym mógł sobie z tym poradzić dwa razy. Mogę collectjako listę i uzyskać z tego nowe strumienie; // doSomething() returns a stream List<A> thing = doSomething().collect(toList()); thing.stream()... // do stuff thing.stream()... // do other stuff Ale wydaje mi się, że powinien być bardziej wydajny / …
Czy wyrażenia lambda mają inne zastosowanie niż zapisywanie wierszy kodu? Czy są jakieś specjalne funkcje zapewniane przez lambdy, które rozwiązały problemy, które nie były łatwe do rozwiązania? Typowe użycie, które widziałem, jest takie, że zamiast pisać to: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) …
Przeczytałem wcześniej kilka samouczków dotyczących języka Java 8. W tej chwili napotkałem następujący temat: Czy java obsługuje Currying? Tutaj widzę następujący kod: IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); Rozumiem, że ten przykład sumuje 2 elementy, ale nie rozumiem konstrukcji: a -> b -> a + …
W szczególności mam TabPane i chciałbym wiedzieć, czy jest w nim element o określonym identyfikatorze. Tak więc chciałbym to zrobić z wyrażeniem lambda w Javie: boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } }
Chciałbym zadeklarować „puste” wyrażenie lambda, które nic nie robi. Czy istnieje sposób na zrobienie czegoś takiego bez konieczności stosowania DoNothing()metody? public MyViewModel() { SomeMenuCommand = new RelayCommand( x => DoNothing(), x => CanSomeMenuCommandExecute()); } private void DoNothing() { } private bool CanSomeMenuCommandExecute() { // this depends on my mood } …
Przejście od lambdy do wyrażenia jest łatwe przy użyciu wywołania metody ... public void GimmeExpression(Expression<Func<T>> expression) { ((MemberExpression)expression.Body).Member.Name; // "DoStuff" } public void SomewhereElse() { GimmeExpression(() => thing.DoStuff()); } Ale chciałbym zmienić Func w wyrażenie, tylko w rzadkich przypadkach ... public void ContainTheDanger(Func<T> dangerousCall) { try { dangerousCall(); } catch …
Używam .NET 3.5 i chciałbym mieć możliwość uzyskania każdego * n* tego elementu z listy. Nie przejmuję się tym, czy osiąga się to za pomocą wyrażenia lambda lub LINQ. Edytować Wygląda na to, że to pytanie wywołało sporo dyskusji (co jest dobre, prawda?). Najważniejsze, czego się nauczyłem, to to, że …
Bardzo chcę używać Map.computeIfAbsent, ale minęło zbyt dużo czasu od czasów lambda w undergrad. Niemal bezpośrednio z dokumentacji: zawiera przykład starego sposobu robienia rzeczy: Map<String, Boolean> whoLetDogsOut = new ConcurrentHashMap<>(); String key = "snoop"; if (whoLetDogsOut.get(key) == null) { Boolean isLetOut = tryToLetOut(key); if (isLetOut != null) map.putIfAbsent(key, isLetOut); } …
Modyfikacja zmiennej lokalnej w programie forEachpowoduje błąd kompilacji: Normalna int ordinal = 0; for (Example s : list) { s.setOrdinal(ordinal); ordinal++; } Z Lambda int ordinal = 0; list.forEach(s -> { s.setOrdinal(ordinal); ordinal++; }); Masz jakiś pomysł, jak to rozwiązać?
W naszym projekcie przeprowadzamy migrację do java 8 i testujemy jej nowe funkcje. W moim projekcie używam predykatów i funkcji Guava do filtrowania i przekształcania niektórych kolekcji przy użyciu Collections2.transformi Collections2.filter. Podczas tej migracji muszę zmienić na przykład kod guava na zmiany java 8. A więc zmiany, które wprowadzam, to: …
Obecnie mam następującą stronę zadeklarowaną: public partial class MyPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //snip MyButton.Click += (o, i) => { //snip } } } Dopiero niedawno przeniosłem się na .NET 3.5 z 1.1, więc jestem przyzwyczajony do pisania programów obsługi zdarzeń poza Page_Load. Moje …
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.