В настоящее время я работаю над проблемой программирования в свое личное время, когда спрашивает, что я создаю функцию javascript, которая может вызывается таким образом.Написание курсовой функции javascript, которую можно назвать произвольным числом раз, которое возвращает значение при самом последнем вызове функции
add(1) // 1
add(1)(2) // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15
У меня возникли проблемы с выяснением того, как заставить его вернуть значение при последнем вызове.
Например, для того, чтобы add(1)(2)
работать, то add(1)
должен возвращать функцию, но в соответствии с инструкциями add(1)
при вызове сама по себе будет возвращать 1
.
Я предполагаю, что вы можете преодолеть это, чтобы выяснить, сколько раз подряд вызывается функция add
, но я не могу придумать способ ее достижения. Есть ли у кого-нибудь намеки, которые могут указывать мне в правильном направлении?
Я прочитал эти две статьи (1, 2) по функции currying, и я их понимаю, но я не уверен, как делать currying при работе с переменным числом аргументов.
Так что вы пробовали? Множество примеров карри в сети. вы возвращаете функцию ... – epascarello
@epascarello жаль, если я не уточнил. Я прочитал этот http://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.html и этот http://blog.carbonfive.com/2015/01/14/gettin-freaky-functional -wcurried-JavaScript /. Что касается моих попыток, они были такими, что я не вижу значения при их публикации. Также у меня нет проблем с каррированием. У меня проблема с функцией, принимающей переменное количество вызовов, прежде чем она окончательно разрешится. Я не знаю, как это сделать. – m0meni
Btw, вместо использования вариационных функций, вы должны решать соответствующие проблемы либо с помощью функций сокращения и двоичного оператора, либо с помощью «полувариантной» функции, где переменные аргументы передаются как массив. Это лучше подходит для функционального стиля. Функции Variadic создают больше проблем, чем они решают, и их следует избегать. – rand