Javascript に同等の構造はありますか。そうでない場合、どのように作成しますか?
Haskell で中置演算子が何をするかを簡単に説明すると、次のようになります。
Javascript に同等の構造はありますか。そうでない場合、どのように作成しますか?
Haskell で中置演算子が何をするかを簡単に説明すると、次のようになります。
JavaScript にはリスト型はありませんが、Array
s.
あなたが使用することができます...
var newArr = [val].concat(arr);
または、配列の先頭に追加するために使用することもできますがunshift()
、元の配列が変更されます。
JavaScript には、:
演算子、演算子のオーバーロード、または演算子のように見えるメソッドがないため、Haskell と同様の構文を取得できません。
Leila Hamonが JS で中置演算子のエミュレートに関するこの記事に既にリンクしているのを見ました。
しかし、例は他の人にとって役立つかもしれないと思いました。
Number
とのプロトタイプをハックして、Boolean
などのチェーンされた中置式を処理する方法を次に示します4 < 5 < 10
。
より多くのメソッドをより多くのプロトタイプに適用することで、これをさらに拡張できます。少し醜いですが、クエリを冗長にするのに役立ちます。
//Usage code
(4) .gt (6) .gt (4) //false
(100) .lt (200) .lt (400) . gt(0) . gt(-1)//true
(100) [ '>' ] (50) [ '<' ] (20)//false
//Setup Code
(function(){
var lastVal = null;
var nP = Number.prototype
var bP = Boolean.prototype
nP.gt = function(other){
lastVal = other;
return this > other;
}
nP.lt = function(other){
lastVal = other;
return this < other;
}
bP.gt = function(other){
var result = lastVal > other;
lastVal = other;
return result;
}
bP.lt = function(other){
var result = lastVal < other;
lastVal = other;
return result;
}
bP['<'] = bP.lt
bP['>'] = bP.gt
nP['<'] = nP.lt
nP['>'] = nP.gt
})()
それは最もきれいではありませんが、コードが散文のように読めるように、インフィックスが必要な場所での読みやすさに役立つ場合があります
function nfx(firstArg, fn, secondArg){
return fn(firstArg, secondArg);
}
// Usage
function plus(firstArg, secondArg) {
return firstArg + secondArg;
}
nfx(1, plus, 2);