我如何使用一些簡單的像「時代」一行散列創作紅寶石
我有一個@date(即= Date.today),然後數天的很乾脆構建在Ruby中的哈希值。 ..說5
5.times { |i| @date_range[:day] = (@date+i).strftime("%Y-%m-%d") }
我知道有一些超級簡單的東西缺少。
謝謝...
我如何使用一些簡單的像「時代」一行散列創作紅寶石
我有一個@date(即= Date.today),然後數天的很乾脆構建在Ruby中的哈希值。 ..說5
5.times { |i| @date_range[:day] = (@date+i).strftime("%Y-%m-%d") }
我知道有一些超級簡單的東西缺少。
謝謝...
Date
對象也Comparable
,所以你可以建立一個Range
:
@range = @date..(@date + 10)
可以遍歷它很容易並輸出結果。如果您要訪問一個特定日期的數字,你可以這樣做:
@date_range = (@date..(@date + 10)).to_a
@date_range[1]
或者,如果你真的需要預先格式化日期,在你的榜樣:
@date_range = (@date..(@date + 10)).map { |date| date.strftime("%Y-%m-%d") }
@date_range[1]
最後一行將相當於用於您的@date_range[1]
(相當於明天/ @date + 1
),即使它實際上是Array
而非Hash
。帶有連續數字鍵的Hash
沒有多大意義:您可以免費獲得這些數字,並且可以使用Array
和作爲獎勵,這些值的順序將被保留。在我看來,使用Range
開始略微澄清意圖,但它不是一個驚人的差異。
這似乎是工作...
(1..10).each { |i| @date_range[i] = (@date+i).strftime("%Y-%m-%d") }
可以使用collect
在一行中創建一個數組,但我不知道在您的哈希進來......
@date_range = 5.times.collect { |i| (@date+i).strftime("%Y-%m-%d") }
需要包含今天的日期加哈希鍵的哈希?
today = Date.today
days = Hash.new { |h,k| h[k] = (today + k).strftime('%Y-%m-%d') }
這具有不限於幾天的優點。它可以用於任何密鑰。另外,計算僅在每個鍵上發生一次,並根據需要進行。
你需要什麼散列?密碼?快速索引?重複檢測? – 2009-06-07 19:09:04
你的代碼沒有意義。您將相同的散列鍵分配給五個不同的值。你究竟在做什麼? – 2009-06-07 19:37:45
看起來你試圖在一行中做得太多。 – Soviut 2009-06-07 19:39:59