方法链在红宝石中是如何工作的?作为C#开发人员,当我看到1.hour.from_now.localtime
时,我不确定发生了什么。这段代码是如何工作的?
<%= 1.hour.from_now.localtime %>
答案 0 :(得分:13)
1
是响应小时的对象
pry(main)> 1.class
=> Fixnum
.hour
是Fixnum上的一种方法,它将其表示为一小时(通过将其更改为3600)
pry(main)> 1.hour.class
=> Fixnum
pry(main)> 1.hour.to_i
=> 3600
.from_now
将3600
的类型更改为日期时间,将来3600秒。
pry(main)> 1.hour.from_now
=> Mon, 22 Sep 2014 19:57:05 UTC +00:00
pry(main)> 1.hour.from_now.class
=> ActiveSupport::TimeWithZone
.localtime
将TimeZone更改为系统本地时间:
pry(main)> 1.hour.from_now.localtime
=> 2014-09-22 12:57:41 -0700
答案 1 :(得分:5)
Ruby中的所有东西都是一个对象,所以在这种情况下:
1
对象收到消息hour
3600 seconds
收到消息from_now
ActiveSupport::TimeWithZone
对象from_now
)偏移一个偏移量(我们的初始Fixnum秒数)localtime
如果要浏览每个步骤,可以使用rails控制台并评估每个步骤以查看返回值(并在每个步骤上调用class
以查看它如何更改类型)