2014-12-19 5 views
0

Я создаю функцию, которая возвращает произвольный член линейной последовательности. Тесты выглядят так:Передача параметров функции javascript после вызова функции?

Test.assertEquals(getFunction([0, 1, 2, 3, 4])(5), 5, "Nope! Try again."); 
Test.assertEquals(getFunction([0, 3, 6, 9, 12])(10), 30, "Nope! Try again."); 
Test.assertEquals(getFunction([1, 4, 7, 10, 13])(20), 61, "Nope! Try again."); 

Я не понимаю вызов функции. Я написал этот код, чтобы определить функцию линейной последовательности и вычислить произвольный член, но я не знаю, как передать мои функции термина для вычисления:

function getFunction(sequence) { 
    var diff = sequence[1] - sequence[0]; 
    var init = sequence[0]; 

    return diff*arguments[1]+init; 
} 

аргументов [1] не имеет доступа к термин, введенный после параметров. Как я могу получить доступ к термину (5) в первом примере?

Test.assertEquals(getFunction([0, 1, 2, 3, 4])(5), 5, "Nope! Try again."); 
+0

Ваша функция должна возвращать функцию. – elclanrs

+0

вы только передаете в свой массив getFunction, нет никаких других аргументов, поэтому аргументы [1] не содержат ничего. –

+0

Как я его прочитал, 'getFunction ([...])' возвращает функцию, которая принимает 5 в аргументе (для первого тестового примера) вы не достигнете аргумента '5' из' getFunction' – topheman

ответ

2

Вы должны вернуть функцию от getFunction() для того, чтобы цепи ваша функция требует, как тесты ожидают

что-то вроде этого:

function getFunction(sequence) { 
    var diff = sequence[1] - sequence[0]; 
    var init = sequence[0]; 
    return function(num) { 
    return diff*num+init; 
    } 
} 
+0

ahhh, так что если бы у меня был вызов, например getSequence (материал) (больше материала) (еще больше вещей); Мне просто нужно было бы сохранить вложенные выражения возврата, возвращающие функции? – user137717

Смежные вопросы