为什么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核心开发人员才能回答的实际问题。
我只能在这里做一个假设:
在包含class
date
和class
DateTime
这两个定义的C-definition
date\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的日期内