0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Сигнатура функции array_merge в документации определяется так:</p>
1
<p>Сигнатура функции array_merge в документации определяется так:</p>
2
<p>Она указывает, что в array_merge можно передать любое количество массивов:</p>
2
<p>Она указывает, что в array_merge можно передать любое количество массивов:</p>
3
<p>С точки зрения вызова, в этом нет ничего необычного - просто разное число аргументов. А вот определение функции с переменным числом аргументов выглядит необычно, потому что здесь незнакомый для нас синтаксис:</p>
3
<p>С точки зрения вызова, в этом нет ничего необычного - просто разное число аргументов. А вот определение функции с переменным числом аргументов выглядит необычно, потому что здесь незнакомый для нас синтаксис:</p>
4
<p>Три точки представляют собой<strong>оператор Spread</strong>. Основная сложность в том, что оператор Spread выполняет разные действия в зависимости от того, где он применяется. В определении функции он выполняет упаковку параметров, а при вызове - распаковку. Об упаковке мы поговорим в этом уроке, а о распаковке - в следующем.</p>
4
<p>Три точки представляют собой<strong>оператор Spread</strong>. Основная сложность в том, что оператор Spread выполняет разные действия в зависимости от того, где он применяется. В определении функции он выполняет упаковку параметров, а при вызове - распаковку. Об упаковке мы поговорим в этом уроке, а о распаковке - в следующем.</p>
5
<p>Итак, оператор Spread в определении функции собирает все переданные аргументы в массив. Если в функцию не передается ни одного аргумента, то массив будет пустым:</p>
5
<p>Итак, оператор Spread в определении функции собирает все переданные аргументы в массив. Если в функцию не передается ни одного аргумента, то массив будет пустым:</p>
6
<p>Обратите внимание, что этому оператору не важен тип аргументов. Они все станут элементами массива, даже если мы передаем на вход функции массивы:</p>
6
<p>Обратите внимание, что этому оператору не важен тип аргументов. Они все станут элементами массива, даже если мы передаем на вход функции массивы:</p>
7
<p>Теперь взглянем на<a>сигнатуру</a>функции min(), которая ищет наименьшее значение:</p>
7
<p>Теперь взглянем на<a>сигнатуру</a>функции min(), которая ищет наименьшее значение:</p>
8
<p>Видно, что функция min() ждет на вход как минимум одно значение, опциональны только следующие. Такого поведения можно добиться следующим кодом:</p>
8
<p>Видно, что функция min() ждет на вход как минимум одно значение, опциональны только следующие. Такого поведения можно добиться следующим кодом:</p>
9
<p>То же самое можно сделать и для двух аргументов:</p>
9
<p>То же самое можно сделать и для двух аргументов:</p>
10
<p>Эту идею можно продолжать и дальше, делая обязательными нужное количество аргументов. Единственное ограничение - оператор Spread можно использовать только для последнего аргумента. Другими словами, такой код синтаксически неверен:</p>
10
<p>Эту идею можно продолжать и дальше, делая обязательными нужное количество аргументов. Единственное ограничение - оператор Spread можно использовать только для последнего аргумента. Другими словами, такой код синтаксически неверен:</p>
11
<p>Такой код тоже не верен с точки зрения синтаксиса:</p>
11
<p>Такой код тоже не верен с точки зрения синтаксиса:</p>
12
12