Автор оригинала: FreeCodeCamp Community Member.
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 является функцией, при прохождении его в другую функцию мы создаем нашу собственную функцию более высокого порядка, которая реагирует на вызывы «компоненты более высокого порядка». Если вы используете CONTOMSS (и расширять Regive компонент
), вы уже используете HOCS.
Компонент без гражданства
const details = ({ name, randomNum }) => `${name}, ${randomNum}`
У нас есть функция, называемая Детали
, в которые мы проходим реквизит
Отказ Мы деконструируем их, когда они входят и присвоили их местным переменным Имя
и Randomnum
Отказ Это синтаксис ES6 – если он выглядит незнакомым, дайте ему Google (вам понравится).
Это Функция первого порядка – Требуется один аргумент (A реквизит
объект) и возвращает шаблон литерал.
Компонент высшего порядка
const hoc = (component, props) => { const randomNum = Math.floor(Math.random() * 100) return component({ ...props, randomNum }) }
Это Функция высшего порядка – Это требует в функции (компонент компонент
, который затем вызывает, проходя в дополнительных реквизитах). Это чрезвычайно основной пример того, что делает каждый актектор бездействия.
Вы можете использовать этот шаблон в абстрактный код, который передается среди многих компонентов в вашем приложении.
Вы задаетесь вопросом, можете ли вы устанавливать функции высшего порядка? Ты можешь! Но будь осторожен. Абстракции должны сделать код легче читать и работать с Отказ Легко спускаться по пути здесь, где ваш код так тупой, никто не может понять, как ничего делать.
Рекомендации
- Функция высшего порядка , Википедия
- Функции высшего порядка Красноречивый JavaScript (глава 5)
- Array.Prototype MDN Docs Отказ