Софтуерно Инженерство
Loading...
+ Нов въпрос
simeon.georgiev avatar simeon.georgiev 62 Точки

[Homework] Advanced JS - Functions and function expressions - Problem{5} Function Composition

Привет! Моля за малко концептуална помощ за тази задача- идеята ми е ясна, но не разбирам как се обработват параметри, подадени в следния вид function(anotherFunction, yetAnotherFunction)(5). Какви трябва да са параметрите на функцията compose() в такъв случай? Как се обработват по принцип параметри, подадени по този начин?

1
JavaScript Advanced
Filkolev avatar Filkolev 4428 Точки

Самата функция compose() приема два аргумента - двете функции, които се композират. Вече за резултантната функция трябва да ползваш arguments, понеже не е ясно колко параметъра ще бъдат подадени.

2
simeon.georgiev avatar simeon.georgiev 62 Точки

Добре, а съвсем примерно как може да се оформи това? Понеже ако извикам compose(function, anotherFunction)(5) ми дава error, както се и очаква.

0
Filkolev avatar Filkolev 4428 Точки

compose() ще връща функция, която ще прави нещо с arguments. Какво прави, ами прилага двете подадени функции последователно - първо пуска аргументите на едната функция, а после подава резултата на другата функция. Крайният резултат се връща.

Мисля, че ключовото е, че compose() връща функция, оттам нататък не е особено сложно да се измисли какво да се прави.

2
f31m6d avatar f31m6d 4 Точки

Лично аз ползвах ето ТОВА.

Ето и горе долу какво трябва да представлява кода:

var compose = function() {
    var functions = arguments;
    return function() {
        var args = arguments;
        for (var i = functions.length-1; i>= 0; i--) {
            args = [functions[i].apply(this, args)];
        }
        return args[0];
    };
};

 

Подробности в линка по горе.

2
09/03/2015 20:09:50