为什么Ruby';s DateTime.new_偏移量不在rdoc中
我想使用使用方法为什么Ruby';s DateTime.new_偏移量不在rdoc中,ruby,datetime,rdoc,Ruby,Datetime,Rdoc,我想使用使用方法DateTime\new\u offset(0)的答案为UTC时区创建一个实例。但是,我无法在DateTimerdoc或其父类的rdoc中找到它的定义。然而,DateTime确实定义了该方法: DateTime.method_defined? :new_offset # => true 必须有一个很好的理由说明为什么新的偏移量没有出现在rdoc中。它是在Date类中定义的。以下是来源的定义: # d.new_offset([offset=0]) -> date
DateTime\new\u offset(0)
的答案为UTC时区创建一个实例。但是,我无法在DateTime
rdoc或其父类的rdoc中找到它的定义。然而,DateTime
确实定义了该方法:
DateTime.method_defined? :new_offset # => true
必须有一个很好的理由说明为什么新的偏移量没有出现在rdoc中。它是在Date类中定义的。以下是来源的定义:
# d.new_offset([offset=0]) -> date
#
# Duplicates self and resets its offset.
#
# d = DateTime.new(2001,2,3,4,5,6,'-02:00')
# #=> #<DateTime: 2001-02-03T04:05:06-02:00 ...>
# d.new_offset('+09:00') #=> #<DateTime: 2001-02-03T15:05:06+09:00 ...>
def new_offset(p1 = v1)
#This is a stub, used for indexing
end
#d.new_偏移量([offset=0])->日期
#
#复制自身并重置其偏移。
#
#d=日期时间。新(2001,2,3,4,5,6'-02:00')
# #=> #
#d.新偏移量('+09:00')#=>#
def新_偏移量(p1=v1)
#这是一个存根,用于索引
结束
为什么日期时间#新的#偏移量
不出现在日期时间
的RDoc中?
因为它是在父类Date
中定义的
为什么日期#新的#U偏移量
不出现在日期
的RDoc中?
因为它是类Date
中的私有方法(由于显而易见的原因,Date
-对象没有时间部分,因此没有时区),并且私有方法不会出现在RDoc中。
为什么在类Date
中定义了#新的偏移量而不是DateTime
?
这是一个只有Ruby核心开发人员才能回答的实际问题。
我只能在这里做一个假设:
在包含classdate
和classDateTime
这两个定义的C-definitiondate\u core.C
中,定义了两个C-struct,SimpleDateData
和ComplexDateData
,反映了所讨论的Ruby类,其中ComplexDateData
包含SimpleDateData
包含的所有字段。这两个结构的唯一原因似乎是内存使用,以便使Date
-对象比DateTime
-对象占用更少的内存。除此之外,所有函数都是为与两个结构一起使用而编写的,并且没有被复制,这对于明显的原因(例如代码维护)是有意义的,特别是因为两个结构都基于相同的逻辑来表示内部日期。
特别是带有新偏移量的函数dup\u obj\u
是一个C函数,它也被(以后)Ruby类Date
的函数使用,例如方法#httpdate
,并且(可能出于这个原因)被归于类Date
与其他函数一样,d_lite_new_offset
依赖于复制给定对象(结构),因此,依赖于dup_obj_和_new_offset
。因此,d_lite\u new_offset
也可能归因于Date
当然,有另一种方法可以勾勒出C文件的轮廓,但是Ruby类的结果不会有什么不同,我想,这就是为什么没有人认为有理由改变当前的轮廓
为什么DateTime#new_offset
不出现在DateTime
的RDoc中?
回到最初的问题,我总结说,有两件事我不明白,因此无法解释:我不知道为什么
为ruby-doc.org创建RDoc的脚本的编写方式不依赖于类的所有公共方法的定义DateTime#new_offset
并不是唯一被遗忘的方法;还有很多其他的。仅在日期时间中就有一些,例如小时
,分钟
,秒分数
。所有这些方法都是DateTime
-对象的公共方法,但不会出现在任何RDoc中…
对于索引,这些类中至少没有一些方法存根可以帮助RDoc脚本拾取所有公共方法李>
这是哪个版本的?ruby 2.0.0p353(2013-11-22修订版43784),但也不在rdoc的日期内