これは理論的な問題ですが、これを行う方法が必要であると感じています。純粋なユニークなIDを生成するための機能的アプローチ
JSコンポーネントは、作成時に他のコンポーネントで使用されていないHTML要素に一意のIDを割り当てる必要があります。これは通常、非常に簡単です:
let currentId = 0;
function getNextId() {
currentId += 1;
return currentId;
}
function MyComponent() {
this.id = getNextId();
// Code which uses id
}
let c1 = new MyComponent();
// c1.id === 1
let c2 = new MyComponent();
// c2.id === 2
ただ純粋関数を使用して、この種のものを行うにはどのような方法があります場合、私はいくつかのより高度な純粋な機能のアイデアのまわりで私の頭をラップしようとしているように私は、思ったんだけど。限り、私はそれを達成するMonadまたはそのようなものの何かを必要とすることがわかりますが、私はそうする方法を知らない。
ありがとうございました!ちょうど行く使う乱数を生成するには
var generateRandom = (function seed(){
var start = 0;
return function(){
return start++;
}
})();
:
generateRandom(); //logs 0
generateRandom(); //logs 1
generateRandom(); //logs 2 and so on..
あなたは純粋な関数を呼び出しているように、これは見えますが
グローバル状態が1でシミュレートされた)への追加の引数として状態を渡します2)毎回の状態を追加の戻り値として返す、3)状態のすべてのコンシューマが正しくシーケンスされるようにして、ある関数からの更新された状態が次の関数に渡されるようにする。 Haskellでは、これは 'State'モナドによってカプセル化されています。 – chepner
@chepnerこれはすでにかなりの答えです。 – duplode
ちょっと@chepner!情報をありがとう!上記の例を使用して実際にこのアイデアを表示するStackOverflow答えを提供することができますか?あなたがしてそれが動作する場合、私は答えを受け入れることをうれしく思います! –