如何在Ruby中格式化数组?

问题描述 投票:-3回答:3

所以我要做的是在数组中使用格式并获得输出。

formatter = ["%{name}","%{height}","%{weight}"]

puts formatter % {name: "Gleb", height: "174", weight: "64"}

无法理解为什么它不起作用。

arrays ruby formatting
3个回答
1
投票

如何在数组中使用格式并获得输出:

formatter.map { |f| f % {name: "Gleb", height: "174", weight: "64"} }
#⇒ ["Gleb", "174", "64"]

如果预期的输出是"Gleb 174 64",那么之后可能会加入结果:

formatter.map do |f|
  f % {name: "Gleb", height: "174", weight: "64"}
end.join(' ')
#⇒ "Gleb 174 64"

0
投票

看起来你试图让formatter成为一个字符串,而不是一个数组,所以你忘记了%之前的[

formatter = %["%{name}","%{height}","%{weight}"]
puts formatter % {name: "Gleb", height: "174", weight: "64"}
#=> "Gleb","174","64"

0
投票

问题

您的格式化程序变量必须包含String对象。目前,您通过将多个字符串括在方括号中来指定一个数组,这些字符串将它们指定为数组文字的元素。

解决方案

修复代码的一种方法是删除数组元素周围的括号,并将它们合并为单个字符串以进行插值。例如:

formatter = "%{name}, %{height}, %{weight}"
formatter % {name: "Gleb", height: "174", weight: "64"}
#=> "Gleb, 174, 64"

当然还有其他解决方案,有或没有百分比运算符,但这应该解决您的特定问题,同时保留您想要的格式字符串语义。

© www.soinside.com 2019 - 2024. All rights reserved.