ruby - 为什么 Ruby 的 DateTime.new_offset 不在 rdoc 中

标签 ruby datetime rdoc

我想创建一个 DateTime使用来自 this SOF post 的答案的 UTC 时区实例使用方法 DateTime#new_offset(0)。但是,我无法在 DateTime rdoc 或其父类的 rdoc Date 中找到它的定义。 .然而,DateTime 确实定义了方法:

DateTime.method_defined? :new_offset # => true

new_offset 没有出现在 rdoc 中一定有充分的理由。

最佳答案

为什么 DateTime#new_offset 没有出现在 DateTime 的 RDoc 中?
因为它是在父类Date中定义的。

为什么 Date#new_offset 没有出现在 Date 的 RDoc 中?
因为它是 Date 类中的私有(private)方法(原因很明显,Date 对象没有时间部分,因此没有时区)并且是私有(private)的方法没有出现在 RDoc 中。
Compare definition in Ruby/ext/date/date_core.c

为什么 #new_offsetDate 类而不是 DateTime 中定义?
这是只有 Ruby 核心开发人员才能回答的实际问题。
我这里只能做一个假设:
在包含类 Date 和类 DateTime 的定义的 C 定义 date_core.c 中,定义了两个 C 结构,SimpleDateDataComplexDateData,镜像相关的 Ruby 类,其中 ComplexDateData 包含 SimpleDateData 包含的所有字段。这两个结构的唯一原因似乎是内存使用,以便让 Date-object 比 DateTime-object 占用更少的内存。除此之外,所有函数都被编写为与两个结构一起使用并且没有被复制,出于显而易见的原因(例如代码维护),这是有道理的,特别是因为两个结构都基于相同的内部日期表示逻辑。
Compare how most functions check the internal data-type with: if (simple_dat_p...
特别是函数 dup_obj_with_new_offset 是一个 C 函数,它也被(后来的)Ruby 类 Date 的函数使用,例如。方法 #httpdate,并且(可能由于这个原因)归因于类 Date
Compare RDoc for Date#httpdate
与其他函数一样,d_lite_new_offset 依赖于复制给定对象(结构),因此依赖于 dup_obj_with_new_offset。因此,d_lite_new_offset 也可能归因于 Date
当然,会有另一种方法来概述 C 文件,但 Ruby 类的结果不会有所不同,我想这就是为什么没有人认为有理由更改当前的轮廓。

为什么 DateTime#new_offset 没有出现在 DateTime 的 RDoc 中?
回到最初的问题,我总结一下,有两件事我不明白,因此无法解释:我不知道为什么......

  1. 为 ruby​​-doc.org 创建 RDoc 的脚本的编写方式不会独立于类的所有公共(public)方法,而不管它们是如何定义的。 DateTime#new_offset 并不是被遗忘方法的唯一例子;还有很多其他的。仅在 DateTime 中就有一些,例如。 #hour#min#sec_fraction。所有这些方法都是 DateTime 对象的公共(public)方法,但不会出现在任何 RDoc 中...
    Compare definition of DateTime methods
  2. 对于索引,这些类中至少没有一些方法 stub 可以帮助 RDoc 脚本获取所有公共(public)方法。

关于ruby - 为什么 Ruby 的 DateTime.new_offset 不在 rdoc 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22018557/

相关文章:

ruby - 将 Ruby 源代码作为 HTML 添加到 RDoc

ruby - 试图找到手册的引用但找不到

ruby-on-rails-3 - 在 Mac OS X Lion 上安装 rails 3.1 时找不到文件 'lib'

ruby-on-rails - 有没有 "Code Complete"的 Ruby 书?

ruby - 如何生成前 n 个素数?

ruby - 如何在 ruby​​ 中打印 Fixnum 类的所有方法

datetime - Highcharts 在日期时间图表中显示错误的月份(下个月)

ruby-on-rails - 如何从 rest api 返回 pdf 文件?

php - DateDiff 为每个时区返回不同的结果

datetime - ZonedDateTime 中的 XMLGregorianCalendar 格式日期