gpt4 book ai didi

ruby - Ruby 2.0 中的日期类行为异常

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:32 26 4
gpt4 key购买 nike

Ruby 版本:ruby 2.0.0p247 (2013-06-27) [x64-mingw32]

为什么下面的代码能够创建 Date 对象但无法对其调用有效方法?

代码版本 1

p d = Date.new  # Works fine - Prints - #<Date:0x000000027aa628>
p Date.gregorian_leap?(2016) # undefined method `gregorian_leap?' for Date:Class (NoMethodError)

代码版本 2 如果我们添加 require 语句,上面的代码可以正常工作

require 'date'
p d = Date.new # Prints #<Date: -4712-01-01 ((0j,0s,0n),+0s,2299161j)>
p Date.gregorian_leap?(2016) # Prints true

在上面的版本 1 中实例化了哪个 Date 类? Ruby 是否有完全限定类名的概念,我们可以通过检查来找出两种情况下的区别?


Ruby 版本:ruby 2.2.2p95(2015-04-13 修订版 50295)[x64-mingw32]

Ruby 2.2 中,Date.new 提前失败 - 不像 Ruby 2.0 那样行为不端

p d = Date.new # uninitialized constant Date (NameError)
p Date.gregorian_leap?(2016) # did not reach here, previous line errored out

最佳答案

正如 Marek Lipka(在评论部分)所指出的,

It's because Ruby 2.0 had an empty Date class for compatibility reasons.

Reference: bugs.ruby-lang.org/issues/9890

关于ruby - Ruby 2.0 中的日期类行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31959755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com