2017-11-09 9 views
0

In Javascript Sie die Verbreitung Syntax in einem Funktionsaufruf wie folgt verwenden können:Spread-Syntax in Funktionsaufruf in Reason

console.log(...[1,2,3]); 

Gibt es ein Äquivalent in Grund? Ich habe versucht, die folgenden:

let bound = (number, lower, upper) => { 
    max(lower, min(upper, number)); 
}; 

let parameters = (1,0,20); 

bound(...parameters) |> Js.log; 

aber das gibt einen unbekannten Syntaxfehler:

Try reason snippet

Antwort

0

Es gibt nicht. Der Grund ist eine statisch typisierte Sprache und Listen sind dynamisch groß und homogen. Es wäre sehr begrenzt und gar nicht offensichtlich, wie es mit zu wenigen oder zu vielen Argumenten umgehen würde. Wenn Sie eine Liste übergeben möchten, sollten Sie einfach eine Liste akzeptieren und diese als separate Funktion behandeln, falls gewünscht.

Sie könnten natürlich auch ein Tupel verwenden, das ist eine feste Größe und heterogen, aber ich sehe auch keinen Anwendungsfall, da Sie die Funktion auch direkt aufrufen können.

Für JavaScript FFI gibt es jedoch das Attribut bs.splice, mit dem Sie eine variable Anzahl von Argumenten auf eine js-Funktion mithilfe eines Arrays anwenden können. Aber es muss mit einem Array Literal aufgerufen werden, nicht irgendein Array.