2013-08-31 20 views
6

Làm thế nào tôi có thể viết lại mã Ruby này trong Clojure?Làm thế nào để tôi viết từng phần của Ruby trong Clojure?

seq = [1, 2, 3, 4, 5].each_cons(2) 
#=> lazy Enumerable of pairs 
seq.to_a 
=> [[1, 2], [2, 3], [3, 4], [4, 5]] 

Clojure:

(??? 2 [1 2 3 4 5]) 
;=> lazy seq of [1 2] [2 3] [3 4] [4 5] 
+0

BTW, @fujy, khi tôi thêm ' Thẻ ruby' trong tình huống tương tự với câu hỏi này http://stackoverflow.com/questions/18072261/how-to-rewrite-rubys-arrayx-in-clojure?rq=1, @sawa đã xóa nó. Tôi có xu hướng đồng ý với anh ấy. Đây không phải là câu hỏi về Ruby, đó là câu hỏi về Clojure. – DNNX

+2

Có, tôi đồng ý với bạn rằng đó không phải là câu hỏi về 'ruby'. Tuy nhiên, tôi nghĩ rằng người có thể trả lời nên hiểu mã 'ruby'. – fujy

Trả lời

9

gì bạn đang yêu cầu được gọi là sliding window qua một cách sequence.This lười biếng bạn có thể đạt được điều đó

user=> (partition 2 1 [1 2 3 4 5]) 
((1 2) (2 3) (3 4) (4 5)) 
+0

bạn có thể viết mã đầy đủ không? Tôi muốn xem đầu ra .. –

+0

Tôi nên chú ý hơn khi đọc tài liệu về chức năng phân vùng. Cảm ơn bạn! – DNNX

+0

@DNNX Tôi cũng vậy :) –

Các vấn đề liên quan