You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Testuje přítomnost hodnoty v iterátoru. Používá striktní porovnání (`===`).
24
+
Tato metoda prochází zadaný iterátor a hledá, zda obsahuje konkrétní hodnotu. Používá striktní porovnání (`===`), což znamená, že porovnává nejen hodnotu, ale i datový typ. Je to užitečné, když potřebujete zjistit, zda se určitý prvek nachází v kolekci dat.
Testuje přítomnost klíče v iterátoru. Používá striktní porovnání (`===`).
37
+
Podobně jako metoda `contains()`, ale tato metoda hledá konkrétní klíč v iterátoru, ne hodnotu. Opět používá striktní porovnání (`===`). To je užitečné, když potřebujete zjistit, zda v kolekci existuje konkrétní index nebo klíč.
Testuje, zda všechny prvky iterátoru projdou testem implementovaným v `$predicate`se signaturou `function ($value, $key, iterable $iterable): bool`.
50
+
Tato metoda testuje, zda všechny prvky v iterátoru splňují podmínku definovanou v funkci `$predicate`. Funkce `$predicate` se volá pro každý prvek a musí vracet true nebo false. Pokud funkce vrátí false pro jakýkoliv prvek, metoda `every()` okamžitě vrátí false. Pokud funkce vrátí true pro všechny prvky, metoda vrátí true.
47
51
48
52
```php
49
53
$iterator = new ArrayIterator([1, 30, 39, 29, 10, 13]);
Iterátor, který filtruje prvky dle predikátu. Ten má signaturu `function ($value, $key, iterable $iterable): bool`. Zachovává původní klíče.
64
+
Tato metoda vytváří nový iterátor, který obsahuje pouze ty prvky z původního iterátoru, pro které funkce `$predicate` vrátí true. Původní klíče jsou zachovány.
65
+
66
+
Důležité je, že tato metoda vrací generátor. To znamená, že filtrování se provádí "líně" (lazy evaluation) - až ve chvíli, kdy se skutečně přistupuje k prvkům. To má několik výhod:
67
+
68
+
1. Úspora paměti: Nemusíme držet v paměti celou filtrovanou kolekci najednou.
69
+
2. Možnost práce s nekonečnými sekvencemi: Můžeme filtrovat i potenciálně nekonečné datové proudy.
70
+
3. Efektivita: Pokud neprojdeme všechny prvky (např. když hledáme jen první vyhovující), ušetříme výpočetní čas.
Vrátí první položku (odpovídající predikátu, je-li zadán). Pokud taková položka neexistuje, vrátí výsledek volání `$else` nebo null.
73
-
Parametr `$predicate` má signaturu `function ($value, $key, iterable $iterable): bool`.
87
+
Tato metoda vrací první prvek iterátoru. Pokud je zadána funkce `$predicate`, vrátí první prvek, pro který tato funkce vrátí true. Pokud žádný prvek nevyhovuje (nebo je iterátor prázdný), vrátí se výsledek volání funkce `$else`, nebo null, pokud `$else` není zadáno.
Vrátí klíč první položky (odpovídající predikátu, je-li zadán). Pokud taková položka neexistuje, vrátí výsledek volání `$else` nebo null. Predikát má signaturu `function ($value, $key, iterable $iterable): bool`.
102
+
Podobná metodě `first()`, ale místo hodnoty prvku vrací jeho klíč. Opět můžete použít `$predicate` pro definici podmínky a `$else` pro alternativní návratovou hodnotu.
Tato metoda vytváří nový iterátor, kde každý prvek je výsledkem aplikace funkce `$transformer` na odpovídající prvek původního iterátoru. Původní klíče jsou zachovány.
98
118
99
-
Iterátor, který transformuje hodnoty voláním `$transformer`. Ten má signaturu `function ($value, $key, iterable $iterable): bool`. Zachovává původní klíče.
119
+
Podobně jako `filter()`, i tato metoda vrací generátor, což přináší stejné výhody:
120
+
121
+
1. Úspora paměti: Transformace se provádí postupně, ne najednou pro celou kolekci.
122
+
2. Možnost práce s potenciálně nekonečnými sekvencemi.
123
+
3. Efektivita: Pokud neprojdeme všechny prvky, ušetříme výpočetní čas.
Iterátor, který transformuje klíče a hodnoty voláním `$transformer`. Pokud funkce vrátí null, prvek je přeskočen. Transformer má signaturu `function ($value, $key, iterable $iterable): ?array{newValue, newKey}`.
140
+
Tato metoda je podobná metodě `map()`, ale umožňuje transformovat jak hodnoty, tak klíče. Funkce `$transformer` by měla vracet pole se dvěma prvky: novou hodnotou a novým klíčem. Pokud funkce vrátí null, prvek bude přeskočen.
141
+
142
+
Využití generátoru zde přináší stejné výhody jako u metod `filter()` a `map()`:
143
+
144
+
1. Úspora paměti při práci s velkými kolekcemi.
145
+
2. Možnost transformovat potenciálně nekonečné sekvence.
146
+
3. Efektivita při částečném průchodu kolekcí.
112
147
113
148
```php
114
-
$iterator = new ArrayIterator(['a' => 1, 'b' => 2]);
Obalí iterátor a během iterace ukládá do mezipaměti jeho klíče a hodnoty. To umožňuje opakovanou iteraci dat.
166
+
Tato metoda vytváří "memoizovanou" verzi iterátoru. To znamená, že při prvním průchodu iterátorem se všechny hodnoty a klíče uloží do paměti. Při dalších průchodech se pak používají tyto uložené hodnoty místo opakovaného procházení původního iterátoru.
167
+
168
+
To je užitečné v situacích, kdy:
169
+
1. Potřebujete projít stejnou kolekcí dat vícekrát.
170
+
2. Původní iterátor je "jednorázový" (např. generátor, který lze projít pouze jednou).
171
+
3. Získávání dat z původního iterátoru je časově náročné a chcete výsledky ukládat do mezipaměti.
124
172
125
173
```php
126
-
$iterator = new ArrayIterator([1, 2, 3]);
127
-
$memoized = Iterables::memoize($iterator);
128
-
// Můžete nyní iterovat $memoized vícekrát bez ztráty dat
Testuje, zda alespoň jeden prvek iterátoru projde testem implementovaným v `$predicate`se signaturou `function ($value, $key, iterable $iterable): bool`.
197
+
Tato metoda testuje, zda alespoň jeden prvek iterátoru splňuje podmínku definovanou v funkci `$predicate`. Funkce `$predicate` se volá pro každý prvek a musí vracet true nebo false. Pokud funkce vrátí true pro jakýkoliv prvek, metoda `some()` okamžitě vrátí true. Pokud funkce vrátí false pro všechny prvky, metoda vrátí false.
136
198
137
199
```php
138
200
$iterator = new ArrayIterator([1, 30, 39, 29, 10, 13]);
Tato metoda konvertuje jakýkoliv iterovatelný objekt (pole, Iterator, IteratorAggregate) na objekt typu Iterator. To je užitečné, když potřebujete zajistit jednotné rozhraní pro práci s různými typy kolekcí.
148
212
149
213
```php
150
214
$array = [1, 2, 3];
151
215
$iterator = Iterables::toIterator($array);
152
216
// Nyní máte Iterator místo pole
217
+
218
+
foreach ($iterator as $value) {
219
+
echo $value . ' ';
220
+
}
221
+
// Vypíše: 1 2 3
153
222
```
154
223
224
+
Tato metoda je zvláště užitečná, když píšete funkci, která má pracovat s iterátory, ale chcete umožnit uživatelům předávat i běžná pole.
0 commit comments