2012-01-19 19 views
17

Jan 19 olduğunu hayal edin. Bu soruya bugün bakarsanız, bu zor olmayacaktır.Ruby ifadesi değerlendirmesi: beyaz boşluk mu?

Date.today 
=> Thu, 19 Jan 2012 # as expected 

Date.today + 1 
=> Fri, 20 Jan 2012 # as expected 

Date.today+1 
=> Fri, 20 Jan 2012 # as expected 

Date.today +1 
=> Thu, 19 Jan 2012 # ?! 

Burada nelerin eksik?

Date.today + 1 

bir, iki sayısal değerlerin eklenmesi ve

Date.today +1 

değeri ile parametre sg (takvim reform gün) yöntemine today bir çağrı olduğu:

+4

Bu ilginç :-) –

cevap

16

fark olmasıdır +1

Bunu incelemenin en iyi yolu, özgün yöntemde hata ayıklama çıktısına sahip maymun düzeltme ekidir. tamamalanır. Örneğin, bu komut dosyası bakınız:

require 'date' 

class Date 

    def self.today(sg=ITALY) 
    puts "ITALY default("+sg.to_s+")" if sg==ITALY 
    puts sg unless sg==ITALY 
    jd = civil_to_jd(*(Time.now.to_a[3..5].reverse << sg)) 
    new0(jd_to_ajd(jd, 0, 0), 0, sg) 
    end 

end 

puts "- Addition:" 
Date.today + 1 
puts "- Parameter:" 
Date.today +1 

Bu aşağıdaki konsol çıktısını yazdırır:

- Addition: 
ITALY default(2299161) 
- Parameter: 
1 
4

Evet, boşluk kanının aksine Ruby konuyu, yok. Örneğin, foo bar, foobar ile aynı değildir. Bu özel durumda,

,

Date.today + 1 

Date.today(+1) 
aynıdır

Date.today().+(1) 

Date.today +1 

ise aynıdır

hangi aynıdır

Date.today([email protected]()) 
İlgili konular