HTML Diff
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