在Ruby语言中,以下工作在irb
for fruit in ['apple', 'banana', 'cherry', 'date'] do
puts fruit
end
但是这个不是
# error
for fruit in ['apple', 'banana', 'cherry', 'date'] { puts fruit }
请注意以下块分隔符不会出错
5.times do |i|
puts "hello "+i.to_s
end
5.times { |i| puts "hello "+i.to_s }
编辑:我想我观察到的是与替代{}的方式不一致有人可以解释为什么或请指出我的错误?
答案 0 :(得分:10)
this帖子的以下引用很好地解释了“不一致”(强调我的):
cucumber -p test_dev
是一个通用关键字,用于结束上下文(条件,类和模块定义,方法定义,循环和异常捕获[语句])。 大括号是定义块或哈希的特殊语法。
end
循环是控制结构 - 不是带有块参数的方法 - 因此必须使用for
关键字关闭它们。 end
和Enumerable#times
等方法都有一个块参数,可以使用Enumerable#each
或{ }
语法定义。
答案 1 :(得分:0)