gpt4 book ai didi

ruby - Ruby "==="运算符在范围上的含义

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:33 27 4
gpt4 key购买 nike

我最近开始学习 Ruby,并且正在阅读以下内容 Ruby Manual .

在本手册中,他们说了以下内容(关于范围):

A final use of the versatile range is as an interval test: seeing if some value falls within the interval represented by the range. This is done using ===, the case equality operator.

通过这些例子:

  • (1..10) === 5 » 正确
  • (1..10) === 15 » 错误
  • (1..10) === 3.14159 » 正确
  • ('a'..'j') === 'c' » 真
  • ('a'..'j') === 'z' » 错误

阅读 Ruby 的“===”运算符后 here ,我发现这适用于范围,因为 Ruby 将其转换为 case 语句。

So you may want to be able to put the range in your case statement, and have it be selected. Also, note that case statements translate to b===a in statements like case a when b then true end.

但是我有以下问题:为什么以下命令返回 true?

(1..10) === 3.14159 » 正确

因为 (1..10) 表示 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我预计结果会是错误的。

最佳答案

1..10 表示 Range在数学意义上从 0 到 10,因此包含 3.14259

[1,2,3,4,5,6,7,8,9,10]相同。

这个数组是方法 Range#each 的结果, 由 Enumerable#to_a 使用构造一个对象的数组表示,只产生包含的整数值在范围内,因为产生所有实数值意味着遍历无限数量的元素。

关于ruby - Ruby "==="运算符在范围上的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726162/

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