簡體   English   中英

在CoffeeScript中的缺點(:)?

[英]Cons (:) in CoffeeScript?

Haskell提供了:函數以將項目添加到列表的前面:

*Main> :t (:)
(:) :: a -> [a] -> [a]

例:

*Main> 1 : 2 : 3 : []
[1,2,3]

CoffeeScript是否存在這樣的功能/運算符?

據我所知,CoffeeScript沒有實現類似Haskell的列表。 最接近的方法/函數是數組取消移位方法

但是,Haskell cons函數會在保留原始列表的同時創建一個列表,而Array.unshift會修改現有數組,因此它們實際上不是一回事。

CoffeeScript中有許多鏈表的實現,例如:

但我看不到CoffeeScript本身支持的任何內容。

我將使用本機unshift方法,盡管它會返回結果數組的長度, 而不是數組本身的長度,所以您不能像示例所示那樣鏈接調用。

作為一種有趣的選擇, CoffeeScript的ranges功能允許進行splicing ,可以將其值添加到現有數組的前面:

array = [ 1, 2, 3 ]

array[..0] = [ 4, array[0] ]

console.log array # [ 4, 1, 2, 3 ]

更精確地講,它刪除數組的第一個元素,並在賦值的右側添加兩個元素(您所需的前綴和原始0值)。

我們甚至可以通過將其包裝在括號中並引入數組的引用變量來鏈接它:

array = [ 1, 2, 3 ]

(( array[..0] = [ 4, array[0] ] ) and array).unshift(5)

console.log array # [ 5, 4, 1, 2, 3 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM