2017-05-29 38 views
0

使用ImmutableJS有没有办法将“空”值推入列表,返回相同的未更改列表?举例来说,如果我有一个List xs和选项a,我想这样做:ImmutableJS:在推送后返回不变的列表

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

等同于:

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

我想用更清晰的语法和O(1)推动效率。

+0

你可能的意思是'xs ::: Nil',假设'xs'本身就是一个列表。在scala中,'::'是左边的单个元素和右边的List之间的List“cons”操作符。 – Aivean

+0

其实是的,我不确定我甚至在想什么。我将删除第一行,因为它不相关 – user2066880

回答

0

ImmutableJS中的push方法需要零个或多个参数,因此您应该可以在空数组上使用spread运算符来获得所需的功能。

xs.push(...a.getOrElse([])) 

需要注意的是,无论您从getOrElse获得的结果都需要采用数组格式。

+0

不要认为这会起作用。这将一个空数组推到我的列表中。 – user2066880

+0

对不起,应该已经测试过了。我已经更新了答案。你应该能够使用传播运算符来解决这个问题。 – ecrothers