我有一个循环,每次重复时都应该将变量dot
的引用从句点更改为空格:
dot = (dot == ".") ? " " : "."
这样可以正常工作,但它对我来说不像适当的Ruby。看起来这应该是一行声明。我想知道是否有更多类似Ruby的方法来实现这一目标。我愿意以不同的方式在循环中实现这一目标;可能gsub
可以做到。
答案 0 :(得分:2)
dot = [' ', '.'].cycle
#=> #<Enumerator: [" ", "."]:cycle>
dot.next #=> " "
dot.next #=> "."
dot.next #=> " "
dot.next #=> "."
答案 1 :(得分:1)
怎么样:
dot.gsub(/[\. ]/, '.' => ' ', ' ' => '.')
这意味着:
寻找.
或space
并替换为space
和.
答案 2 :(得分:1)
如果你的循环是标准形式之一,你可以使用#with_index或其变体:
objects.each_with_index do |element, index|
separator = index.even? ? "." : " "
... do something with element and separator
end
这使得意图明确,这通常胜过聪明的编码。