Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么叫';时区本地';而不是';时区。新';?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 为什么叫';时区本地';而不是';时区。新';?

Ruby on rails 为什么叫';时区本地';而不是';时区。新';?,ruby-on-rails,ruby,Ruby On Rails,Ruby,这似乎正是你所想的Time.zone.new所做的。虽然,时区.new不存在。为什么这种特殊的命名会偏离标准 更新: 问题在于理解为什么Rails在实例化某个特定类型的新对象时会偏离使用.new的惯例。例如,使用Time.zone.local(2013,10,1)而不是Time.zone.new(2013,10,1)来获取TimeWithZone对象。并不是所有返回新值的方法都被称为new 一般来说,new总是类上的一个方法,它返回所述类的一个新实例。然而,Time.zone.local不是类,

这似乎正是你所想的
Time.zone.new
所做的。虽然,
时区.new
不存在。为什么这种特殊的命名会偏离标准

更新:
问题在于理解为什么Rails在实例化某个特定类型的新对象时会偏离使用
.new
的惯例。例如,使用
Time.zone.local(2013,10,1)
而不是
Time.zone.new(2013,10,1)
来获取
TimeWithZone
对象。

并不是所有返回新值的方法都被称为
new

一般来说,
new
总是类上的一个方法,它返回所述类的一个新实例。然而,
Time.zone.local
不是类,而是
ActiveSupport::TimeZone
的实例。将其定义为
new
会产生很大的误导,因为这意味着
Time.zone
返回一个类而不是一个对象实例


因此,
ActiveSupport::TimeZone#local
是在“local”(即所选)时区中创建新的
ActiveSupport::TimeWithZone
实例的方法的合理名称。在通常的Rails上下文中,您将设置
Time.zone
,调用
Time.zone.local(…)的模式
因此清楚地说明了这里发生的事情:在用户的本地时区中创建一个新的类似时间的对象。

您指的不是
new
?@ndn不是在
ActiveSupport::timezone
上,而是在
Time
上,对吗?我投票结束这个问题,因为它与编程无关。你怎么能认为一个不存在的方法会起作用?我不明白。你说的“标准”是什么?一点也不清楚。这还意味着
Time.zone.new
将返回
Time.zone
类的实例,即
TimeZone
实例,而不是
TimeWithZone
实例。