如何迭代地将数组的元素插入 Ruby 中的字符串?
How to iteratively interpolate elements of an array into a string in Ruby?
我正在尝试做这样的事情:
my_array = [1,2,3]
puts "Count numbers" + my_array.each {|n| " #{n}"}
我想看的是“数数 1 2 3”。但是因为 .each returns 数组,而不是块中返回的内容,所以这是不可能的。如何遍历数组并将每个元素一个一个地插入到一个字符串中?我现在不担心格式化白色 space 或换行符。然而,这将在错误记录的上下文中使用,我只想给我的记录器一个字符串来打印,所以我不能单独打印每个元素。
这是 Ruby 的 map
和 join
函数的完美案例:
puts "Count numbers " + my_array.map{|n| n.to_s}.join(" ")
map
函数将数组中的每个元素映射到其字符串表示形式,join
将它们连接在一起,以空格分隔。
编辑:在这种特定情况下,可以省略 map
部分,其中元素直接转换为字符串。 join
无论如何都会将每个元素转换为字符串,因此 my_array.join(" ")
足以解决这种情况。
视情况而定,可能根本没有理由通过障碍。对于给出的示例,您可以像这样简单地使用 join
方法:
puts "Count numbers " + my_array.join(" ")
#=> "Count numbers 1 2 3"
...或者,有趣的是,您也可以使用 *
运算符来做几乎相同的事情:
puts "Count numbers " + my_array*(" ")
#=> "Count numbers 1 2 3"
注意:我包含 *
运算符选项主要是作为一个奇怪的选择。我不确定它是否真的比 join
方法有任何好处,除非您可能试图让您的代码尽可能神秘。你永远不知道。很高兴知道有哪些方法可用。
只是根据您最初尝试的解决方案更具体地给您另一个答案:
my_array = [1,2,3]
my_string = "Count numbers"
my_array.each {|n| my_string << " #{n}"}
puts my_string
#=> "Count numbers 1 2 3"
主要区别在于我们首先为所需的输出字符串创建一个容器,然后在 each
块内连接到该字符串。
我正在尝试做这样的事情:
my_array = [1,2,3]
puts "Count numbers" + my_array.each {|n| " #{n}"}
我想看的是“数数 1 2 3”。但是因为 .each returns 数组,而不是块中返回的内容,所以这是不可能的。如何遍历数组并将每个元素一个一个地插入到一个字符串中?我现在不担心格式化白色 space 或换行符。然而,这将在错误记录的上下文中使用,我只想给我的记录器一个字符串来打印,所以我不能单独打印每个元素。
这是 Ruby 的 map
和 join
函数的完美案例:
puts "Count numbers " + my_array.map{|n| n.to_s}.join(" ")
map
函数将数组中的每个元素映射到其字符串表示形式,join
将它们连接在一起,以空格分隔。
编辑:在这种特定情况下,可以省略 map
部分,其中元素直接转换为字符串。 join
无论如何都会将每个元素转换为字符串,因此 my_array.join(" ")
足以解决这种情况。
视情况而定,可能根本没有理由通过障碍。对于给出的示例,您可以像这样简单地使用 join
方法:
puts "Count numbers " + my_array.join(" ")
#=> "Count numbers 1 2 3"
...或者,有趣的是,您也可以使用 *
运算符来做几乎相同的事情:
puts "Count numbers " + my_array*(" ")
#=> "Count numbers 1 2 3"
注意:我包含 *
运算符选项主要是作为一个奇怪的选择。我不确定它是否真的比 join
方法有任何好处,除非您可能试图让您的代码尽可能神秘。你永远不知道。很高兴知道有哪些方法可用。
只是根据您最初尝试的解决方案更具体地给您另一个答案:
my_array = [1,2,3]
my_string = "Count numbers"
my_array.each {|n| my_string << " #{n}"}
puts my_string
#=> "Count numbers 1 2 3"
主要区别在于我们首先为所需的输出字符串创建一个容器,然后在 each
块内连接到该字符串。