2017-05-29 2 views
0

Avec ImmutableJS existe-t-il un moyen de pousser une valeur "vide" sur une liste, retournant la même liste inchangée? Par exemple, si j'ai une liste xs et une option a, je voudrais faire quelque chose comme:ImmutableJS: Retourne inchangé Liste après push

xs.push(a.getOrElse(null)) // doesn't work as intended 

équivalent à:

xs.concat(a.map(a => [a]).getOrElse([])) // works as intended 

Je voudrais utiliser la syntaxe propre et O (1) l'efficacité de pousser cependant.

+0

vous vouliez probablement dire 'xs ::: Nil', en supposant que' xs' est lui-même une liste. En scala '::' est l'opérateur de liste "contre" entre un seul élément sur la gauche et la liste sur la droite. – Aivean

+0

effectivement ouais je ne suis pas sûr de ce que je pensais même. Je vais supprimer la première ligne parce que ce n'est pas pertinent – user2066880

Répondre

0

La méthode push dans ImmutableJS prend zéro ou plusieurs arguments, vous devriez donc pouvoir utiliser l'opérateur spread sur un tableau vide pour obtenir la fonctionnalité que vous recherchez. L'inconvénient de ceci est que quel que soit le résultat de getOrElse, il doit être au format tableau.

+0

Ne pense pas que cela va fonctionner. Cela pousse un tableau vide sur ma liste. – user2066880

+0

Désolé, nous aurions pu tester. J'ai mis à jour la réponse. Vous devriez pouvoir utiliser l'opérateur spread pour corriger cela. – ecrothers