Ich habe den folgenden Code, wo ich in den id
füllen will, so ich denke, so etwas zu schreiben:Ramda Find mit Lücken
const data = [
{ id: 'some-id' },
{ id: 'some-other-id' },
{ id: 'third-id' },
];
const tabIndex = R.findIndex(R.propEq('id', R.__))(data);
So kann ich es wie diese tabIndex('third-id')
verwenden, aber dies ist keine Funktion. Was vermisse ich oder verwirre ich damit?
folgende Arbeiten
const tabIndex = (id) => R.findIndex(R.propEq('id', id))(data);
Aber ich dachte, das ist der Punkt von R.__
Lücken Funktion.
'findIndex' weiß nichts über Funktoren; Es funktioniert nur mit Listen (wirklich nur dichte Arrays). Das Problem besteht darin, die Argumente an die richtige Stelle zu bringen, um entsprechend für 'findIndex' und' propEq' aufgerufen zu werden. –
@ScottSauyet Danke für die Klarstellung - falsche Terminologie beiseite, ich denke immer noch, dass es etwas gibt, was ich über Funktionen als Argumente sagen will, gibt es einen "funktionalen" Grund warum und mir fehlt einfach das Vokabular oder vielleicht nur etwas wurde noch nicht implementiert? – Emissary
Die Sache mit Funktionen als Argumente ist, dass sie die richtige Signatur haben müssen. Also hat 'findIndex' den Typ' :: (a -> Boolean) -> [a] -> Number.' Und in diesem Fall steht 'a' nur für Object. Daher muss das an "findIndex" übergebene Prädikat den Typ ':: Object -> Boolean' haben. Aber 'propEq' hat den Typ' :: String -> b -> Objekt -> Boolean'. Bevor wir unsere 'propEq'-Funktion an' findIndex' übergeben, müssen wir die 'String'- und' b'-Eigenschaften teilweise anwenden, um sie mit einer ':: Object -> Boolean'-Funktion zu verlassen.Wir können das tun, wie Sie es hier vorschlagen, oder mit beiden Versionen in meiner Antwort. (1/2) –