2012-01-19 13 views

risposta

16

La differenza è che:

Date.today + 1 

è una somma di due valori numerici e

Date.today +1 

è una chiamata al metodo today con il parametro sg (giorno di riforma del calendario) con il valore +1

Il modo migliore per esaminare questo è quello di eseguire il patch di scimmia sul metodo originale con l'output di debug in cluso. Vedere questo script come ad esempio:

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 

Questo stamperà il seguente output della console:

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

Sì, gli spazi bianchi fa importa in Ruby, contrariamente alla credenza popolare. Ad esempio, foo bar non corrisponde a foobar.

In questo caso particolare,

Date.today + 1 

è uguale

Date.today().+(1) 

considerando

Date.today +1 

è la stessa

Date.today(+1) 

che è lo stesso di

Date.today([email protected]()) 
Problemi correlati