Igor
Ты сначала с каррированием разберись - попробуй на практике закрепить
он правильный вопрос задал :) мы каррирование на замыкании сделали :)
Виталик Голоенко
ну там челу впервые за всю карьеру оно понадобилось
Andrii
а можете про замыкания еще рассказать?)
Вот в этом коде, что ты сказал понятно, и есть замыкание
Виталик Голоенко
а в чем прикол замыкания?
Дима
он правильный вопрос задал :) мы каррирование на замыкании сделали :)
Тогда меняем курс: пусть сначала с замыканием разберется ))
Andrii
а можете про замыкания еще рассказать?)
Замыкание это когда в процессе создания функции мы забираем какую-то переменную из контекста. В этом случае она остаёться жива даже после выхода из функции
Andrii
function getAccumulator() { let s = 0; return function(x) { s += x; return s; } }
Andrii
Поиграйся в консили с этой функций
Виталик Голоенко
Andrii
так можно ж просто return s + x :)
Нельзя, это совсем другая функция. Теперь у нас накопление
Виталик Голоенко
тоесть с каждым вызовом функции с накапливается?
Виталик Голоенко
а не исчезает после завершения функции?
Andrii
let acc = getAccumulator(); acc(10); // returns 10 acc(20); // returns 30 acc(30); // returns 60
Виталик Голоенко
о спс, понял вам бы учителем быть xd
Igor
о спс, понял вам бы учителем быть xd
Это интересно только на первом уроке :) чрезе неделю все приходят и как в осьминожках :) "и начинается дело с начала" :)
Дима
о спс, понял вам бы учителем быть xd
знал бы ты сколько раз я сам думал что понял и ничего не понимал в итоге) Все эти вещи изучаются по синусоиде - у них штук пять стадий понимания и непонимания)
Дима
Так что я очень рекомендую все же попрактиковаться, станет понятно что ничего не понятно
Andrii
о спс, понял вам бы учителем быть xd
А если let acc1 = getAccumulator(); let acc2 = getAccumulator(); Они будут увеличивать одну переменную или разные?
Виталик Голоенко
разные
Andrii
Правильно :)
Виталик Голоенко
Правильно :)
угадал xd
Виталик Голоенко
ну вот тут шото обьясняют
Igor
ну вот тут шото обьясняют
откатись назад к лексическому окружению там хорошо разберись
Andrii
Неужели не проще открыть консоль и там поэкспериментировать?
Дима
ну вот тут шото обьясняют
примерчики, примерчики, примерчики. Напиши этот код, меняй его, смотри что будет
Дима
Это невозможно понять просто читая слова на экране
Andrii
Если Вам чего-то непонятно - экспериментируйте и всё
Виталик Голоенко
return function() { return count++; // есть доступ к внешней переменной "count" }; } почему тут 2 ретурн, а непросто return function count ++?
Виталик Голоенко
Igor
И тут мы приходим к функциям первого класса :(
Виталик Голоенко
аче)
Igor
аче)
это не про первый класс школы а про то что функция такой же объект как любой другой. https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%B5%D1%80%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0
Andrii
return function() { return count++; // есть доступ к внешней переменной "count" }; } почему тут 2 ретурн, а непросто return function count ++?
Потому что функция так конструируется. Лве фукнции, два ретурна, по одному на брата. Там ещё если синтексис вроде function getCounter() { counter = 0; return () => counter++; }
Andrii
Но точно синтексис не помню упрощённый
Igor
тебе нужно вернуть функцию как объект и этот объект нужно создать а функция создается именно таким синтаксисом function {.. return smth} а потом мы эту функцию возвращаем return function {return smth}
Igor
Вот честно не верю что в книжках пишут непонятней чем мы тут в чЯтике.
Andrii
Книжка на вопросы не отвечает
Igor
Книжка на вопросы не отвечает
Книжку нужно уметь читать соглашусь.
Виталик Голоенко
Igor
буквы не каждый знает
читать и знать буквы это разные вещи :)
Andrii
Вот я не понимаю почему. Говоришь: открывай консоль... А люди что угодно делают, чтобы только не открывать: сайты читают, ютьюб смотрят...
Виталик Голоенко
Andrii
В консоле ты видишь всё что поменялось
Igor
та шо консоль мне даст, на ютубе хоть обьяснять, а в консоле только фигу вижу
у тебя есть идея что ты понимаешь . Ты придумываешь как это проверить и предсказываешь поведение функции до ее запуска. Запускаешь если совпало ты молодец. Если не совпало разбираешься почему. Такие подтверждения дают почувствовать что происходит и проверяют твое понимание.
Andrii
А на ютьюбе ты видишь только то, что тебе показали
Igor
а ты пытаешься подобрать веса без тестовых данных :)
Виталик Голоенко
Andrii
кста а почему функции в переменные заносяца?
Чтобы лучше показать, что функция это значение
Igor
кста а почему функции в переменные заносяца?
потому что функции в большинстве современных языков "объекты первого класса" т.е функция может быть таким же объектом как и любой другой. ее можно присваивать переменным можно передавать в качестве параметров в другие функции и тд
Andrii
function x(a) { rerurn a+1;) let y= function (a) { return a+1;} Одно и тоже
Andrii
та шо консоль мне даст, на ютубе хоть обьяснять, а в консоле только фигу вижу
Пока ты видишь фигу - хороший индикатор, что не осилил пока
Сергей
Кто-то уже пробовал Git Copilot?
Andrii
Кто-то уже пробовал Git Copilot?
Решать задачи на кодеварз?
Дима
та шо консоль мне даст, на ютубе хоть обьяснять, а в консоле только фигу вижу
Потому что ты занимаешься самообманом) Если твои знания ты никак не проверил на практике они ничего не стоят. Может все что ты до этого понял ты понял неправильно. Нужно кучу примеров разбирать на каждую тему. И это я не говорю уже о том, что нужно еще задачки решать
Дима
Я одну задачу в день-два решаю
нормально, в год так может выйти 400 задач, а это разве плохо?)
Anonymous
Такой я медленный
Дима
Я решаю задачки:)
Ты можешь решать задачки для которых кроме фора и ифа ничего не надо, а нужно понять то, что в теории проходишь
Andrii
Я решаю задачки:)
По функциям высших порядков?
Виталик Голоенко
По функциям высших порядков?
Не совсем xd А где мне такие задачи найти?
Сидредин
По функциям высших порядков?
функции из высшего общества)