方法链如何在Ruby中工作?

时间:2014-09-22 18:45:57

标签: ruby-on-rails ruby

方法链在红宝石中是如何工作的?作为C#开发人员,当我看到1.hour.from_now.localtime时,我不确定发生了什么。这段代码是如何工作的?

<%= 1.hour.from_now.localtime %>

2 个答案:

答案 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_now3600的类型更改为日期时间,将来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中的所有东西都是一个对象,所以在这种情况下:

如果要浏览每个步骤,可以使用rails控制台并评估每个步骤以查看返回值(并在每个步骤上调用class以查看它如何更改类型)