yield to (1) słowo kluczowe, które ułatwia tworzenie funkcji generatora, (2) instrukcja Ruby do przenoszenia kontroli z jednego programu do drugiego, (3) instrukcja Java używana do uzyskiwania wartości z wyrażenia przełączającego.
Pomyślałem, że fajnie byłoby zrobić coś takiego (z lambdą zwracającą wydajność): public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new() { IList<T> list = GetList<T>(); var fun = expression.Compile(); var items = () => { foreach (var item in list) if (fun.Invoke(item)) yield return item; // This is not …
Czy jest jakiś sposób na połączenie rekurencji i yieldinstrukcji? Na przykład generator liczb nieskończonych (wykorzystujący rekurencję) wyglądałby tak: def infinity(start): yield start # recursion here ... >>> it = infinity(1) >>> next(it) 1 >>> next(it) 2 Próbowałem: def infinity(start): yield start infinity(start + 1) i def infinity(start): yield start yield …
Mam generator, generatora także wygodną metodę - generate_all. def generator(some_list): for i in some_list: yield do_something(i) def generate_all(): some_list = get_the_list() return generator(some_list) # <-- Is this supposed to be return or yield? Czy generate_all returnlub yield? Chcę, aby użytkownicy obu metod używali tego samego, tj for x in generate_all() …
Różnica pomiędzy returni yieldwydawało się oczywiste, dopóki nie zorientowali się tam także yield fromi możliwość łączenia obu returni yieldw tej samej funkcji! Rozumiałem, returnże wszystko po tym nie zostało wykonane, prawda? Jednak: function generate(): iterable { return [1, 2, 3]; } foreach (generate() as $value) { echo $value; } Produkuje: …
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.