2016-06-29 17 views
0

Gibt es ein Problem beim Aufruf eines Ausdrucks in einem anderen Ausdruck? Ursache wenn ich das tue:Esper create expression - ReferenceError: "Funktion " ist nicht definiert

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)); 
]; 

Ich habe einen Fehler \ "hexToBin \" ist nicht definiert. (getTemperatur # 2). Aber wenn ich den ganzen Code in getTemperature setze, funktioniert es richtig.

Antwort

0

Wie bereits im Ausdruck gesagt, sind Sie in JavaScript und es hat keine Ahnung von Esper.

Ein Ausdruck muss jedoch keine einzelne Funktion enthalten. Es ist nur ein Teil eines Skripts, mit dem Sie mehrere JavaScript-Funktionen innerhalb eines einzelnen Ausdrucks definieren können, wenn Sie den Code strukturieren möchten.

+0

Okay, aber ich brauche mehrere Funktionen, um auf meine hexToBin-Funktion zuzugreifen. Wenn ich einen Ausdruck getTemperature erzeuge und hexToBin als JS-Funktion darin einfüge, müsste ich hexToBin duplizieren, wenn ich einen anderen Ausdruck getSomethingElse habe, der es ebenfalls benötigt, whould not I? Ich brauche eine Möglichkeit, eine Funktion aus mehreren Funktionen aufzurufen. –

+0

Nicht 100% sicher, wie alles am Ende aussehen soll. Bis jetzt ist das einzige, was die getTemperature tut, ein Teilstring. Sie haben diese Funktionalität auch direkt in esper (über die .subsctring-Funktion von Java String). Vielleicht brauchen Sie nur die Funktion hexToBin – TyrManuZ

+0

Sicher kann ich in diesem Fall etwas herausfinden, aber ich frage mich, ob es Code für komplexere Fälle faktorisieren könnte? –

0

Der JavaScript-Code kennt die EPL-Ausdrücke nicht. Es wäre interessant zu untersuchen, ob Rhino von den EPL-Ausdrücken erzählt werden könnte.