【问题标题】:How does cover? work in this case with characters?怎么盖?在这种情况下使用字符?
【发布时间】:2012-01-09 19:00:30
【问题描述】:

我在尝试理解 Range 类的 cover? 方法的工作原理时遇到了一些麻烦。

从文档中说:

cover?(val) → true or false :如果 obj 介于 beg 和 end 之间,则返回 true,即 beg

当我这样做时:

test = "A".."X" 

我预计test.cover? "AX" 会失败,因为对象AX 对我来说似乎超出了该范围限制。但是它返回 true。然后我这样做:test.cover? "XX" 它返回 false

我看不出 AX 在该范围内的情况如何,总的来说,我认为很难看出 cover? 对非数字对象的作用。所以我的问题是:对象“AX”如何在该范围内,但对象“XX”不在。

【问题讨论】:

  • 有人曾经提交过一份错误报告,称这种行为令人困惑。

标签: ruby range


【解决方案1】:

在这里在黑暗中拍摄,但我假设这是因为“AX”在之后“A”所以它在范围内,而“XX”在之后 /em> "X" 超出范围。

签入IRB可以看到:

"AX" > "A" && "AX" < "B" => true
"XX" > "X" => true

【讨论】:

  • 我对字符串的大小感到困惑,这在封面上似乎没有那么重要?方法。谢谢!
  • "AX" &lt; "B" 行有点误导,因为cover? 在其比较中不会在内部使用“B”。
  • @GavinMiller:正确,#cover?将在 A/X 上使用 >= &&
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2015-06-16
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多