dot
我有一个循环,每次重复时应该将变量的所指对象从句点更改为空格:
dot = (dot == ".") ? " " : "."
这很好用,但对我来说它不像正确的 Ruby。看起来这应该是一个单行语句。我想知道是否有更类似于 Ruby 的方式来实现这一点。我愿意以不同的方式循环完成此任务;或许gsub
可以做到。
dot
我有一个循环,每次重复时应该将变量的所指对象从句点更改为空格:
dot = (dot == ".") ? " " : "."
这很好用,但对我来说它不像正确的 Ruby。看起来这应该是一个单行语句。我想知道是否有更类似于 Ruby 的方式来实现这一点。我愿意以不同的方式循环完成此任务;或许gsub
可以做到。
dot = [' ', '.'].cycle
#=> #<Enumerator: [" ", "."]:cycle>
dot.next #=> " "
dot.next #=> "."
dot.next #=> " "
dot.next #=> "."
如果您的循环是标准形式之一,您可以使用 #with_index 或其变体:
objects.each_with_index do |element, index|
separator = index.even? ? "." : " "
... do something with element and separator
end
这使得意图明确,这通常胜过聪明的编码。
怎么样:
dot.gsub(/[\. ]/, '.' => ' ', ' ' => '.')
意思是:
查找.
orspace
并替换为space
and.