2017-05-29 32 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