是否有類似於Haskell循環的Ruby方法? Haskell的循環獲取一個列表並返回該列表無限地附加到自身。它通常用於從數組頂部捕獲一定數量的元素的take。有沒有一個Ruby方法接受一個數組並返回n次附加數組?Ruby類似於Haskells循環的方法
回答
可以使用Array#*
乘以一個整數數組:
元* INT→new_ary
[...]否則,返回由建一個新的數組連接
self
的int
拷貝。
所以你可以做這樣的事情:
>> [1, 2] * 3
=> [1, 2, 1, 2, 1, 2]
+1,個人而言,我通常會這樣做。 'cycle'可能是「懶惰」,或者至少不會產生像'*'這樣的中間數組。 – 2013-03-06 07:07:11
@theTinMan:由於'a.cycle'和'a.cycle(n)'都是'Enumerator',我懷疑'cycle'是懶惰的。如果我知道我需要多少,我會用'*',如果我不知道,我會用'循環'。 – 2013-03-06 07:11:10
是的,它被稱爲cycle
。從文檔:
Array.cycle (from ruby core) ------------------------------------------------------------------------------ ary.cycle(n=nil) {|obj| block } -> nil ary.cycle(n=nil) -> an_enumerator ------------------------------------------------------------------------------ Calls block for each element repeatedly n times or forever if none or nil is given. If a non-positive number is given or the array is empty, does nothing. Returns nil if the loop has finished without getting interrupted. If no block is given, an enumerator is returned instead. a = ["a", "b", "c"] a.cycle {|x| puts x } # print, a, b, c, a, b, c,.. forever. a.cycle(2) {|x| puts x } # print, a, b, c, a, b, c.
編輯:
好像什麼塊內基本上是「拉姆達」,而且據我所知,我不能讓一個lambda將每個元素連接到現有陣列上。
b = [1, 2, 3]
z = []
b.cycle(2) { |i| z << i }
z # => [1, 2, 3, 1, 2, 3]
搞怪當你閱讀精細手冊時會發生什麼,呃? – 2013-03-06 07:04:20
不可思議的事情發生;神祕的方法似乎從來沒有出現過。 :-) – 2013-03-06 07:05:29
我閱讀手冊。這看起來不像Haskell的循環所做的那樣。我對Ruby有點新鮮,所以我真的不知道如何讓循環做我想做的事。看起來塊內部的內容基本上是一個「Lambda」,據我所知,我不能將每個元素的lambda連接到現有的數組上。 – 2013-03-06 07:10:42
- 1. 是否有類似於Java/C++的for循環的Ruby版本?
- 2. Ruby方法類似attr_reader
- 3. Python - 重啓for循環的方式,類似while循環的「continue」?
- 4. 是否有類似於循環迭代器的循環?
- 5. Jinja2 for循環行爲類似於
- 6. Ruby/Rails跳出循環內的方法
- 7. ruby未定義的方法'[]'nil:NilClass循環中的循環
- 8. 如何循環遍歷類似於for循環
- 9. php array_merge循環或類似
- 10. Rxjava2類似於BiFunction背壓的方法
- 11. 是否有類似於OnOrientationChanged的方法?
- 12. Ruby on Rails:有沒有類似於子類的C++虛擬方法?
- 13. 「對於下一步」循環來基於具有類似名稱
- 14. 如何在Ruby的File類中使用.include?類似的方法?
- 15. 循環方法
- 16. 從循環中的類運行方法
- 17. 修復類的方法循環
- 18. 主循環中的類方法?
- 19. 如何在Ruby中使用類似於Array()的方法(沒有點語法)?
- 20. 用於連接列表中的類似列表的循環
- 21. python中的循環與matlab類似嗎?
- 22. 用於Ruby語言的C'for循環
- 23. Ruby的錯誤處理類似於Perl
- 24. 類似Ruby的'除非'用於C#嗎?
- 25. Ruby - 類方法
- 26. 棄用循環方法,等同於'didRotateFromInterfaceOrientation'?
- 27. 對於循環錯誤作爲方法
- 28. 比較循環鏈表等於方法
- 29. iPhone - 行間距方法類似於CGContextSetCharacterSpacing
- 30. igraph to_undirected()方法類似於NetworkX
僅供參考,週期由下式給出:'週期XS = XS',其中的xs' = XS ++ xs''這就是美 – 2013-03-06 20:10:26