0

Javascript に同等の構造はありますか。そうでない場合、どのように作成しますか?

Haskell で中置演算子が何をするかを簡単に説明すると、次のようになります。

: 中置演算子は Haskell で何をしますか?

4

3 に答える 3

4

JavaScript にはリスト型はありませんが、Arrays.

あなたが使用することができます...

var newArr = [val].concat(arr);

または、配列の先頭に追加するために使用することもできますがunshift()、元の配列が変更されます。

JavaScript には、:演算子、演算子のオーバーロード、または演算子のように見えるメソッドがないため、Haskell と同様の構文を取得できません。

于 2012-07-20T00:11:03.723 に答える
2

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


})()
于 2014-09-01T06:01:43.453 に答える
0

それは最もきれいではありませんが、コードが散文のように読めるように、インフィックスが必要な場所での読みやすさに役立つ場合があります

function nfx(firstArg, fn, secondArg){
    return fn(firstArg, secondArg);
}

// Usage

function plus(firstArg, secondArg) {
    return firstArg + secondArg;
}

nfx(1, plus, 2);
于 2013-07-16T03:50:42.477 に答える