私はRamdaにとってかなり新しく、特定の機能を頭に入れようとしています。現在、私はR.useWith
と少し苦労しています。なぜこの基本的な "R.useWith"は正しく動作していませんか?
let myArray = [
{
a: 'wat',
b: 'foo'
},
{
a: 'something',
b: 'something_else'
},
{
a: 'booyah',
b: 'duh'
}
];
そして、私は、各オブジェクトにbar
に等しくなるようにfoo
のプロパティを設定する:
のは、私はオブジェクトの配列を持っているとしましょう。私はこれを行ういくつかの方法があることを知っています、私はこの機能を学ぶことを試みる間、私は人為的な例としてこれを使用しています。一つの方法は、これを行うになります
let setFooToBar = R.assoc('foo')('bar');
let mapMyArray = R.map(R.__, myArray);
をので、この時点で、私は、オブジェクトを受け取る関数setFooToBar
を持っている、とbar
にプロパティfoo
を設定します、と私は機能を期待する機能mapMyArray
を持っている、となります各object
をmyArray
からその機能にマップします。だから、予想通り、この作品:このアプローチは、私はそれを期待する方法が機能しない理由
mapMyArray(setFooToBar)
、私は理解していないものを、次のとおりです。
let callFirstWithSecond = (arg1, arg2) => arg1(arg2);
R.useWith(
callFirstWithSecond,
[
R.map(R.__),
R.assoc('foo')
]
)(myArray, 'bar')
私はこれが、以前のアプローチと同じこと、オブジェクトの新しい配列、それぞれfoo
の新しいプロパティがbar
に設定されたものを返すと期待します。しかし、実際には新しい関数を返しています。私はどこに議論がないのか分かりません。
ありがとうございました!
ああ、ありがとう、スコット!それは全然意味をなす...なんて愚かな間違い。 –
これは[周期的プレースホルダー](https://github.com/sanctuary-js/sanctuary-def/issues/73)が直感的であることを示唆しています。 ;) – davidchambers