irb(main):003:0> Time.now - 1
=> 11.539909
Works as designed. With Time.now -1 the parser parses this as
Time.now(-1). Rule of thumb: use spaces around operators - makes your
code also more readable.
ArgumentError: wrong number of arguments (1 for 0)
from (irb):2:in `initialize’
from (irb):2:in `now’
from (irb):2
#…
irb(main):006:0> Time.now -t
NoMethodError: undefined method `-@’ for Thu Nov 27 16:19:48
+0900 2008:Time
from (irb):6
from :0
fwiw, i like the dot for its power, emphasis, and lesser surprise.
Time.now .- 1
=> Fri Nov 28 00:03:38 +0800 2008
Time.now .-1
=> Fri Nov 28 00:03:57 +0800 2008
Time.now.-1
=> Fri Nov 28 00:04:00 +0800 2008
t=Time.now
=> Fri Nov 28 00:09:15 +0800 2008
-t
NoMethodError: undefined method -@' for Fri Nov 28 00:09:15 +0800 2008:Time from (irb):20 from :0 Time.now -t NoMethodError: undefined method -@’ for Fri Nov 28 00:09:15 +0800
2008:Time
from (irb):21
from :0
Time.now. -t
=> 18.928238
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.