Size: a a a

2021 February 13

В

Виктория in JS Liberty
Get_RiGhT
модифицирует каждый элемент и возвращает новый массив
Что делает метод map, если рассматривать его более детально?
Он берет переданную ему в качестве аргумента функцию трансформации и применяет её для каждого элемента массива
источник

p

persona x grata in JS Liberty
Виктория
Так вот, можно утверждать, что метод map массивов является эндофунктором.
По факту это функция высшего порядка HOF, которая принимает в качестве аргумента колбек успеха
источник

p

persona x grata in JS Liberty
источник

В

Виктория in JS Liberty
Get_RiGhT
модифицирует каждый элемент и возвращает новый массив
То есть этот метод знает как извлекать элементы из массива, применять к ним функцию и складывать обратно, только в другой массив.
источник

V

Vova in JS Liberty
Виктория
Так вот, можно утверждать, что метод map массивов является эндофунктором.
Чего ??
источник

V

Vova in JS Liberty
А метод меп случайно не работает через итераторы ?
источник

В

Виктория in JS Liberty
Get_RiGhT
модифицирует каждый элемент и возвращает новый массив
Грубо говоря этот метод знает как трансформировать каждый из элементов коллекции и при этом сохранить структуру, то есть вернуть обратно именно массив, а не какое-то значение другого типа. Это позволяет организовывать цепочку вычислений для массива.
источник

В

Виктория in JS Liberty
А сейчас более обобщенно
источник

В

Виктория in JS Liberty
Массив это своего рода контейнер, в котором хранятся значения. У нас может быть и контейнер, в котором хранится только одно какое-то значение, не обязательно контейнер должен быть массивом.
Но я привожу в качестве примера именно массивы потому что вам так будет проще понять практическое применение функторов и эндофункторов
источник

p

persona x grata in JS Liberty
Виктория
То есть этот метод знает как извлекать элементы из массива, применять к ним функцию и складывать обратно, только в другой массив.
А мэп еще принимает аргумент this, про это что-нибудь расскажешь?
источник

В

Виктория in JS Liberty
Функторы
источник

p

persona x grata in JS Liberty
Виктория
Массив это своего рода контейнер, в котором хранятся значения. У нас может быть и контейнер, в котором хранится только одно какое-то значение, не обязательно контейнер должен быть массивом.
Но я привожу в качестве примера именно массивы потому что вам так будет проще понять практическое применение функторов и эндофункторов
Че за контейнер? Есть ведь какие-то компьютер саенс наименования связанные списки, хэш-таблицы
источник

p

persona x grata in JS Liberty
Одномерный массив
источник

В

Виктория in JS Liberty
О функторе можно думать как о некоторой ФУНКЦИИ, которая знает как корректно провести преобразование над некоторой СТРУКТУРОЙ данных, соответственно.
Преобразование в данном случае это коллбэк-функция, передаваемая функтору в качестве аргумента.
Функтор распаковывает полученную структуру, достает хранящееся в ней значение, применяет функцию-преобразование к этому значению, получает новое значение и кладет это значение обратно в структуру, которую возвращает
источник

В

Виктория in JS Liberty
И если такой функтор возвращает структуру того же типа (например map метод массивов), то этот функтор является эндофунктором
источник

В

Виктория in JS Liberty
Представим на минуточку, что map возвращал бы, к примеру, не массив, а объект на выходе. В таком случае метод map нельзя было бы назвать эндофунктором, так как внутренняя структура потеряна, массив превратился в объект.
источник

В

Виктория in JS Liberty
Все, я устала
источник

В

Виктория in JS Liberty
Я че-то жрать захотела аж
источник

p

persona x grata in JS Liberty
Если из массива полуяается массива [1, 2, ,3] -> [11, 22, 33] —> это эндофуктор
если [1, 2, 3] -> [ {1: 'a'}, {2: 'b'}, {3: 'c'}] —> это функтор
источник

p

persona x grata in JS Liberty
Виктория
Я че-то жрать захотела аж
Вареники слепила?
источник