颜色代码和字符串插值

Color codes and string interpolation

我正在尝试为文本着色。假设我想要蓝色文字。这是我得到它的方式:

"\e[34mThis is blue text.\e[0m"

我正在使用 define_method 创建多种方法(每种颜色一种)。我将每种颜色的颜色代码保存在一个数组中。我遍历颜色数组和颜色代码,然后执行以下操作:

"\e#{code}m[#{self}\e[0m"

当我 运行 它时,我得到 "m[test" 而不是彩色文本。

有什么想法吗?如果我输入的不是 #{code},而是实际的代码,它可以工作,但是那会像 20 ifs,每种颜色一个,它不会是 DRY。

您可能是复制粘贴的受害者:)

#               ⇓  incorrect
puts "\e#{code}m[#{self}\e[0m"

#       ⇓  correct
puts "\e[#{code}m#{self}\e[0m"

左方括号应该跟在 \e 之后,而不是 m