Ruby: 关键字 "in" 的含义是什么?

7

当我第一次在ruby中发现关键字"in"时,我想也许可以这样用:

1 in (0..10)

但看起来我不能用那种方式。

然后我在ruby-lang.org和谷歌上搜索了它,但没有找到答案!

在ruby中,关键字"in"表示在一个范围内是否包含某个值。例如:

(0..10).include?(1) # 返回 true

希望这能帮助你理解。


请参考以下问题:https://dev59.com/xXVC5IYBdhLWcg3w4VX6 - Mark Pim
3个回答

6

您应该能够完成以下操作:

for i in 0..10 do
  puts i
end

你提到的表达式1 in (0..10)是错误的,因为常量(1)不能在范围内变化-它是一个常量!你需要在in关键字之前命名一个变量。
希望这可以帮到你。
另外请参考这个页面

谢谢! 因为我来自F#和Lisp。我总是使用“each”和“map”。我甚至忘记了“for”循环关键字。 - colder
你也可以在 F# 中使用“for in”循环。 - Mouk
5
Object#each比for...in更符合Ruby的风格。 - Mike Woodhouse
3
为了达到与'for i in 0..10'相同的结果,可以使用Fixnum#times,即'10.times do |i| ... end'。我认为这确实更加表现力和更符合“Ruby风格”。 - Igor

0
我认为也许我可以这样做:1 in (0..10)。但看起来我不能像那样使用它。
现在你可以 :)
因为Ruby引入了模式匹配1 in 0..10是以下代码的别名:
case 1
in 0..10
  true
else
  false
end

使用1 in 0..10表达式,您可以检查一个表达式是否与另一个匹配


0
根据《实用编程人员手册》的书籍,您可以按照以下方式进行操作。
while *name*[, *name*]... in *expression* [do | :]
  body
end

所以你可以在循环中使用它, 如果我的表述不够清晰,抱歉,因为我才刚开始学习 Ruby。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接