Arrays 在Ruby中循环数组时遇到问题

Arrays 在Ruby中循环数组时遇到问题,arrays,ruby,loops,each,Arrays,Ruby,Loops,Each,我是一名初级Ruby程序员。我目前正试图找出我正在编写的代码的错误。基本上,我有一个数组,我试图循环遍历它,并将每个数组作为一个字符串。但不管我做什么,除非我长时间地做,否则什么都不管用,我真的不想做。 首先,以下是我的阵列: array1 = [["Mittens", "is", "a", "cat"], ["Lily", "is", "a", "dog"], ["Alex", "is", "a", "turtle"]] 我想把结果公布出来,结果是这样的: Mittens is a cat

我是一名初级Ruby程序员。我目前正试图找出我正在编写的代码的错误。基本上,我有一个数组,我试图循环遍历它,并将每个数组作为一个字符串。但不管我做什么,除非我长时间地做,否则什么都不管用,我真的不想做。 首先,以下是我的阵列:

array1 = [["Mittens", "is", "a", "cat"], ["Lily", "is", "a", "dog"], ["Alex", "is", "a", "turtle"]]
我想把结果公布出来,结果是这样的:

Mittens is a cat
Lily is a dog
Alex is a turtle
几个小时以来,我一直在尝试使用这个或它的变体:

array1.each do |sub_array|
  sub_array.join(" ")
  puts sub_array
end
但每当我尝试时,结果都是这样:

Mittens
is
a
cat
Lily
is
a
dog
Alex
is
a
turtle
array1.each do |sub_array|
  puts sub_array.join(" ")
end
现在,如果我将puts更改为打印,我只会得到与以前相同的三个数组。因此,在我的程序中没有完成放弃和硬编码three-puts语句的情况下,我遗漏了什么?我知道这一定是一件非常简单的事情,我想写一个循环函数来轻松地实现这一点。谢谢你的关注

Arrayjoin不改变sub_数组,它只返回一个字符串。您可以按如下方式打印sub_array.join的结果:

Mittens
is
a
cat
Lily
is
a
dog
Alex
is
a
turtle
array1.each do |sub_array|
  puts sub_array.join(" ")
end
正如seph所说,join方法返回字符串,但不会将数组转换为字符串

因此,您可以这样做:

 array1.each do |sub_array|
     sub_array_string = sub_array.join(" ")
     puts sub_array_string
 end

谢谢,这是一个很好的解决方案,我还没有考虑。谢谢你的建议!您基本上是对的,但是中间变量不是必需的,这使得代码过于冗长。不过,关于join方法函数的说明很重要。@tadman肯定是这样。这样做是为了证明它正在返回一个字符串。像join这样的方法不会更改原始对象。方法基本上不可能将对象从一个类更改为另一个类,因此字符串永远不会神奇地变成数组。更改类的唯一方法是通过赋值(通常为=)创建新的变量引用。Ruby的方法在返回的内容与变异的内容之间可能有点棘手,因此始终保持文档的开放性,并验证您正在进行的每个调用。读这本手册没有什么丢脸的。