2017-11-12 3 views
0

Warum schlägt das folgende fehl, eine Funktion zurückzugeben?Ramda-Negation in beiden

const isValid = both(not(isEmpty), is(Object)); 

Der Artikel gültig ist, wenn es:

  1. Exists
  2. ist ein Array
  3. nicht leer
+0

Docs für 'not':.„Eine Funktion, die von ihrem Argumente zurück Es ist wahr zurück, wenn falsch-y-Wert übergeben, und falsch, wenn übergeben ein wahrheitsliebender ". 'isEmpty' ist truthy, da es eine Referenz auf eine existierende Funktion ist. Vorsicht, es ist ein Verweis auf die Funktion *, nicht das Ergebnis des Aufrufs dieser Funktion. –

+0

Was gibt es für Sie zurück? Wie importierst du Ramda? – c69

Antwort

1

Wie in meinem Kommentar erwähnt wird, ist not, ähem, nicht was Sie wollen. Stattdessen versuchen complement:

const isValid = R.both(R.complement(R.isEmpty), R.is(Array)); 
 
console.log(isValid); 
 
console.log(isValid([1,2,3]));
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ramda.min.js"></script>

+2

Meine Ergänzungen. Keine schlechte Antwort. Ich werde meinen Mantel holen. – Undistraction