ruby - Ruby 大小写相等运算符失败 ===

标签 ruby switch-statement date-range ruby-2.3

我有:

require 'date'

pap1 = Date.parse('1968-06-12')
pap2 = Date.parse('1968-12-31')
dat = Date.parse('1968-06-12')
dat2 = dat + 5 # => #<Date: 1968-06-17 ((2440025j,0s,0n),+0s,2299161j)>

在下面的例子中,我想测试一个日期是否在一个日期范围内。我希望日期范围 pap1..pap2 涵盖 datdat2case 相等运算符应将 dat 计为在 pap1pap2 范围内:

case dat
when (pap1..pap2)
  puts 'in range'
else
  puts 'not in range'
end
# >> not in range

(pap1..pap2).cover?(dat)              # => true
(pap1..pap2).include?(dat)            # => true
(pap1..pap2) === dat                  # => false
puts 'works' if (pap1..pap2) === dat  # => nil

(pap1..pap2).cover?(dat2)              # => true
(pap1..pap2).include?(dat2)            # => true
(pap1..pap2) === dat2                  # => false
puts 'works' if (pap1..pap2) === dat2  # => nil

但事实并非如此。我错过了什么吗?

最佳答案

这显然是 Ruby 2.3.0 中的一个已知错误,已在 2.3.1 中的某个时间点修复。这是错误报告 Bug Report on === with Dates .答:升级。

关于ruby - Ruby 大小写相等运算符失败 ===,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867618/

相关文章:

sql - 加入并计算 2 个日期之间的不同值

ruby-on-rails - Ruby on Rails I18n 插值

ruby-on-rails - 嵌套路由的 url 中的用户名

java - 为什么 "final static int"可以用作开关的大小写常数,但不能用作 "final static <your enum>"

c - c 中的开关/字符串

SQL 日期范围拆分

ruby-on-rails - 没有路由匹配 [GET] "/recipes/1/like"我想要一个 POST 请求

ruby - 如何查看一个字符串是否包含关键字列表中的关键字?

regex - AWK switch case 与 *.html 不匹配

javascript - 我如何在我的 Angular 2 项目中使用 daterangepicker js?