170 похожих чатов

Мужчины, решаю codewars задачки, есть такая функция, которую можно бесконечно

вызывать add(1)(2)(3), в конце из-за метода toString она всегда отдаст значение currentSum, которое лежит в замыкании. Почему это происходит?

23 ответов

26 просмотров

Ну ты переопределил дефолтную функцию

Zabashtevich- Автор вопроса

Ну спасибо, отец, всей семьей кланяемся)

Zabashtevich- Автор вопроса

понятно, что мы ее переопределили. Почему после крайнего вызова вызывается toString?

Ты вызываешь функцию, которая возвращает рекурсивно функцию Все что делает это функция - инкрементирует currentSum Чтобы тебе вернулся результаь нужно как то чтобы после последнего вызова тебе вернулась не функция, а currentSum Вот там и присобачили toString которая возвращает

Zabashtevich- Автор вопроса

Да я понимаю как оно работает, что оно возвращает значение через переопределение метода, я спрашиваю почему метод toString на функции срабатывает и возвращает значения, если он даже не вызывается, шо это за черная магия?

Это дичь работает и без toString

Zabashtevich- Автор вопроса

нет

Покажи скрин как ты это используешь с результатом плиз

Zabashtevich- Автор вопроса

вызов add(1)(2)(3) вернет 6

Zabashtevich- Автор вопроса

а сори это не мне

Да всё просто, функция add возвращает функцию addF которая возвращает саму себя. А когда ты приводишь addF к строке она возвращает currentSum

Zabashtevich- Автор вопроса

Алло, капитан, я понял как оно работает, я не понял почему метод вызывается.

Ну оно же выводится как-то

Zabashtevich- Автор вопроса

оно выводится из-за ебучего add(1)(2) == 3, == это приведение типов блят, он и вызывает метод

Так он объяснил тебе почему вызывается - потому что приводится к строке

Zabashtevich- Автор вопроса

у блять, а почему оно сука приводится к строке мне никто и не объяснил

потмоу что тустринг, ало

Ну естественно

ты сам и ответил — так захотел автор тестов, где-то в своём коде он твои результаты к строке прибавляет

Так а как ты вызываешь? В консоль лог выводишь?

Zabashtevich- Автор вопроса

я не вызываю, я писал, что у меня codewars задачка, к которой тесты идут.

Ты в куда результат вызова этой конструкции передаёшь? Может ты неявно к строке приводишь?

Ну вот.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта