/
iterables.texy
119 lines (79 loc) · 4.43 KB
/
iterables.texy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Iterátor funkciók
*****************
.[perex]{data-version:4.0.4}
[api:Nette\Utils\Iterables] egy statikus osztály, amely az iterátorokkal való munkához szükséges függvényeket tartalmazza. A tömbökre vonatkozó megfelelője a [Nette\Utils\Arrays |arrays].
Telepítés:
```shell
composer require nette/utils
```
Minden példa feltételezi egy alias létrehozását:
```php
use Nette\Utils\Iterables;
```
contains(iterable $iterable, $value): bool .[method]
----------------------------------------------------
Az iterátorban lévő érték jelenlétének vizsgálata. Szigorú összehasonlítást használ (`===`).
```php
Iterables::contains(new ArrayIterator([1, 2, 3]), 1); // true
Iterables::contains(new ArrayIterator([1, 2, 3]), '1'); // false
```
containsKey(iterable $iterable, $value): bool .[method]
-------------------------------------------------------
Az iterátorban lévő kulcs jelenlétét vizsgálja. Szigorú összehasonlítást használ (`===`).
```php
Iterables::containsKey(new ArrayIterator([1, 2, 3]), 0); // true
Iterables::containsKey(new ArrayIterator([1, 2, 3]), 4); // false
```
every(iterable $iterable, callable $predicate): bool .[method]
--------------------------------------------------------------
Azt vizsgálja, hogy az iterátor minden eleme megfelel-e a `$predicate` -ban megvalósított, `function ($value, $key, iterable $iterable): bool` aláírással ellátott tesztnek.
```php
$iterator = new ArrayIterator([1, 30, 39, 29, 10, 13]);
$isBelowThreshold = fn($value) => $value < 40;
$res = Iterables::every($iterator, $isBelowThreshold); // true
```
Lásd [some() |#some()].
filter(iterable $iterable, callable $predicate): Generator .[method]
--------------------------------------------------------------------
Iterátor, amely az elemeket egy predikátum alapján szűri. A predikátum aláírása `function ($value, $key, iterable $iterable): bool`. Fenntartja az eredeti kulcsokat.
```php
$iterator = new ArrayIterator([1, 2, 3]);
$iterator = Iterables::filter($iterator, fn($v) => $v < 3);
// 1, 2
```
first(iterable $iterable, ?callable $predicate=null, ?callable $else=null): mixed .[method]
-------------------------------------------------------------------------------------------
Visszaadja az első elemet (amely megfelel a predikátumnak, ha meg van adva). Ha ilyen elem nem létezik, a `$else` hívásának eredményét vagy nullát adja vissza.
A `$predicate` paraméter aláírása `function ($value, $key, iterable $iterable): bool`.
```php
Iterables::first(new ArrayIterator([1, 2, 3])); // 1
Iterables::first(new ArrayIterator([1, 2, 3]), fn($v) => $v > 2); // 3
Iterables::first(new ArrayIterator([])); // null
Iterables::first(new ArrayIterator([]), else: fn() => false); // false
```
firstKey(iterable $iterable, ?callable $predicate=null, ?callable $else=null): mixed .[method]
----------------------------------------------------------------------------------------------
Visszaadja az első elem kulcsát (amely megfelel a predikátumnak, ha meg van adva). Ha ilyen elem nem létezik, a `$else` hívásának eredményét vagy nullát adja vissza. A predikátum aláírása `function ($value, $key, iterable $iterable): bool`.
```php
Iterables::firstKey(new ArrayIterator([1, 2, 3])); // 0
Iterables::firstKey(new ArrayIterator([1, 2, 3]), fn($v) => $v > 2); // 2
Iterables::firstKey(new ArrayIterator(['a' => 1, 'b' => 2])); // 'a'
Iterables::firstKey(new ArrayIterator([])); // null
```
map(iterable $iterable, callable $transformer): array .[method]
---------------------------------------------------------------
Iterátor, amely az értékeket a `$transformer` meghívásával alakítja át. Aláírása: `function ($value, $key, iterable $iterable): bool`. Fenntartja az eredeti kulcsokat.
```php
$iterator = new ArrayIterator([1, 2, 3]);
$iterator = Iterables::map($iterator, fn($v) => $v * 2);
// 2, 4, 6
```
some(iterable $iterable, callable $predicate): bool .[method]
-------------------------------------------------------------
Azt vizsgálja, hogy az iterátor legalább egy eleme megfelel-e a `$predicate` nyelven megvalósított, `function ($value, $key, iterable $iterable): bool` aláírással ellátott tesztnek.
```php
$iterator = new ArrayIterator([1, 30, 39, 29, 10, 13]);
$isEven = fn($value) => $value % 2 === 0;
$res = Iterables::some($iterator, $isEven); // true
```
Lásd [every() |#every()].