Рубрики
Без рубрики

Функции высшего порядка: то, что они есть, и Реальный пример

Tech Jargon Series. Есть так много фраз, которые бросаются вокруг … Теги с технологией, программированием, софт-возобновлением, JavaScript.

Tech Jargon Series.

Существуют так много фраз, которые бросаются в Tech Mightups и конференции, предполагая, что все уже сгибаются с линго. Я часто не с линго. Для разработчиков распространены удивление, что мне не хватает знаний.

Правда в том, что я часто просто не знаю правильного слова для этого. Как люди, но особенно разработчики людей, мы любим увольнять тех, кто не «разговаривает на разговоре», поэтому эта серия состоит в том, чтобы получить твердое представление о концепциях программирования, которые один «должен знать».

Моя первая тема для этой серии – это функции высшего порядка. Я был в Tech Meetup на днях на днях, и мы обсуждали отреагирующие и насколько сложно быть для реагирования новичков, чтобы попасть в код. Я упомянул, что компоненты высшего порядка (HOCS) могут быть трудными для понимания. Ответ заключался в том, что они очень похожи на функции высшего порядка, не согласны? И я сказал: «Я не знаю, что это такое. «Когда я попросил пример, мне сказали« карта ». Я шутил о том, как я понятия не имею, какая «карта», и мы переехали.

Но все же: Что такое функция высшего порядка?

(Примечание. Все приведенные приведены в JavaScript, но эта концепция применяется к каждому языку программирования.)

Функции более высокого порядка: определение

Функция более высокого порядка – это то, что либо A) принимает функцию в качестве аргумента или B) возвращает функцию.

Если функция не делает ни одного из этих вещей, это Функция первого порядка Отказ

карта

Начнем с примера, который мне дали: карта.

[1, 2, 3].map(num =\> num \* 2)
\> [2, 4, 6]

Функция карты вызывается на массиве и принимает функцию «обратного вызова». Он применяет функцию для каждого из элементов в массиве, возвращая новый массив. [1, 2, 3] – наш массив и NUM => NUM * 2 – наша функция. Обратный вызов – это аргумент функции, переданный нашу функцию более высокого порядка.

Этот HOF запекается на языке, простопирован на массиве (Array.prototype.map).

Другие примеры прототипирования HOFS на массиве фильтра, уменьшают и некоторые.

Пользовательский пример

Итак, давайте напишем нашу собственную функцию более высокого порядка.

Прошло функцию

const myFunc = age =\> age \* 2

Функция высшего порядка

Теперь мы пишем функцию, которую берет в функция.

const hof = (customFunc, age) =\> customFunc(age + 5)

Мы передадим номер к HOF, который добавит 5, а затем позвонит нашу пропущенную функцию, которая будет удвоить его. Если мы пройдем 10, мы проходим 15 к нашей первой функции, которая затем удваивается до 30.

Наша мертвая функция более высокого порядка работает в терминале

Таможенный пример с реагированными “компонентами”

Как я уже отметил, эта тема придумала со ссылкой на компоненты реагирования. В качестве компонента React является функцией, при прохождении его в другую функцию мы создаем нашу собственную функцию более высокого порядка, которая реагирует на вызывы «компоненты более высокого порядка». Если вы используете элементные компоненты (и расширение компонента React), вы уже используете HOCS.

Компонент без гражданства

const details = ({ name, randomNum }) =\>
 `${name}, ${randomNum}`

У нас есть функция, называемая деталями, в которые мы проходим реквизиты. Мы деконструируем их, поскольку они входят и присвоили их к местным переменным имени и Randomnum. Это синтаксис ES6 – если он выглядит незнакомым, дайте ему Google (вам понравится).

Это Функция первого порядка – Требуется один аргумент (объект реквизита) и возвращает шаблон литерала.

Компонент высшего порядка

const hoc = (component, props) =\> {
 const randomNum = Math.floor(Math.random() \* 100)

return component({ ...props, randomNum })
}

Это Функция высшего порядка – Принимается в функцию (компонент, который затем вызывает, проходя в дополнительных реквизитах). Это чрезвычайно базовый пример того, что делает каждый актектор бездействия.

Наш сверхзонный «компонент» работает в консоли

Вы можете использовать этот шаблон в абстрактный код, который передается среди многих компонентов в вашем приложении.

Вы задаетесь вопросом, можете ли вы устанавливать функции высшего порядка? Ты сможешь! Но будь осторожен. Абстракции должны сделать код легче читать и работать с Отказ Легко спустить путь здесь, где ваш код так тупой, никто не может выяснить, как сделать что-либо.

использованная литература

Оригинал: “https://dev.to/amberwilkie/higher-order-functions-what-they-are-and-a-react-example-1ief”