1

top, top_middle,bottom_middlebottom是四个长字符串。

current鉴于的字符串值与所使用的变量的名称相同the_line- 但不是其实际变量,我该如何干燥以下内容。

是否有某种“variable.variable_name”?

[top,top_middle,bottom_middle,bottom].each_with_index do |the_line, i|
  current=
    case i
      when 0 then "top"
      when 1 then "top_middle"
      when 2 then "bottom_middle"
      when 3 then "bottom"
    end
  puts current
  puts the_line
end

输出正常:

top
 ――      |   ――    ――   |  |   ――   |      ――    ――    ―― 
top_middle
|  |     |   __|   __|  |__|  |__   |__      |  |__|  |__|
bottom_middle
|  |     |  |        |     |     |  |  |     |  |  |     |
bottom
 ――      |   ――    ――      |   ――    ――      |   ――      |
4

1 回答 1

3

我没有将这些相关的东西中的每一个都作为单独的变量,而是将它们中的四个放在一个哈希中:

lines = {
  :top           => ' ――      |   ――    ――   |  |   ――   |      ――    ――    ―― ',
  :top_middle    => '|  |     |   __|   __|  |__|  |__   |__      |  |__|  |__|',
  :bottom_middle => '|  |     |  |        |     |     |  |  |     |  |  |     |',
  :bottom        => ' ――      |   ――    ――      |   ――    ――      |   ――      |'
}

这很好地清理了事情:

lines.each do |current, the_line|
  puts current
  puts the_line
end

这会产生:

最佳
 ―― | ―― ―― | | ―― | ―― ―― ――
顶部中间
| | | __| __| |__| |__ |__ | |__| |__|
底部中间
| | | | | | | | | | | | |
底部
 ―― | ―― ―― | ―― ―― | ―― |

(如果你真的需要current作为一个字符串,你可以调用to_s它,但是在这种情况下将它作为一个符号很好。)

于 2013-06-15T21:25:45.857 回答