2016-06-29 4 views
0

Есть ли проблема с вызовом выражения внутри другого выражения? Причина, когда я делаю:Esper create expression - ReferenceError: "function " не задано

create expression int js:hexToBin(hex) [ 
    var bin = ''; 
    for (var i = 0; i <= hex.length - 1; i += 1) { 
    bin += ('0000' + parseInt(hex.substr(i, 1), 16).toString(2)).slice(-4); 
    }; 
    parseInt(bin, 2); 
]; 

create expression int js:getTemperature(hex) [ 
    hexToBin(hex.substring(4, 6)); 
]; 

У меня ошибка «hexToBin» не определен. (GetTemperature # 2). Но когда я поместил весь код в getTemperature, он работает правильно.

ответ

0

Как уже говорилось в выражении, вы находитесь в JavaScript и не имеете представления об esper.

Но выражение не должно содержать одну функцию. Это просто запись скрипта, поэтому вы можете определить несколько функций JavaScript в одном выражении, если хотите структурировать код.

+0

Хорошо, но мне нужно несколько функций для доступа к моей функции hexToBin. Если я создам выражение getTemperature и включаю hexToBin как функцию JS внутри, мне придется дублировать hexToBin, если у меня есть другое выражение getSomethingElse, которое также нуждается в нем, не так ли? Мне нужен способ вызова функции из нескольких функций. –

+0

Не 100% уверен, как все суждено выглядеть в конце. Пока что getTemperature - это подстрока. Эта функция также доступна в esper напрямую (через функцию .subsctring Java String). Может быть, вам нужна только функция hexToBin – TyrManuZ

+0

Конечно, я могу что-то выяснить в этом случае, но мне было интересно, сможет ли он факторизовать код для более сложных случаев? –

0

Код JavaScript не знает выражений EPL. Было бы интересно исследовать, можно ли рассказывать Rhino об выражениях EPL.