在Ruby中一行打印数组元素

fra*_*sta 2 ruby printing arrays hash puts

我有以下Ruby哈希:

hash = {
0 => "
===
@@@
@ @
@ @
@ @
@@@
===",
1 => "
=
@
@
@
@
@
="}
Run Code Online (Sandbox Code Playgroud)

我想在控制台的一行中打印出一些哈希值。为此,我创建了一个数组,其中包含要打印的元素:

test = [hash[0], hash[1]]
Run Code Online (Sandbox Code Playgroud)

要么

test1 = [hash[0], hash[0]]
Run Code Online (Sandbox Code Playgroud)

如果要打印test1到控制台,结果应为以下内容:

======
@@@@@@
@ @@ @
@ @@ @
@ @@ @
@@@@@@
======
Run Code Online (Sandbox Code Playgroud)

如果我想将`test2打印到控制台,结果应该是:

====
@@@@
@ @@
@ @@
@ @@
@@@@
====
Run Code Online (Sandbox Code Playgroud)

但是,当我使用puts或时print,结果始终是一个接一个地打印而不是在同一行中。

Car*_*and 5

a1, a2 = hash.values.map { |s| s[1..-1].split("\n") }
  #=> [["===", "@@@", "@ @", "@ @", "@ @", "@@@", "==="],
  #    ["=", "@", "@", "@", "@", "@", "="]] 
Run Code Online (Sandbox Code Playgroud)

puts a1.zip(a1).map(&:join)
======
@@@@@@
@ @@ @
@ @@ @
@ @@ @
@@@@@@
======
Run Code Online (Sandbox Code Playgroud)

puts a1.zip(a2).map(&:join)
====
@@@@
@ @@
@ @@
@ @@
@@@@
====
Run Code Online (Sandbox Code Playgroud)

注意:

a1.zip(a1)
  #=> [["===", "==="], ["@@@", "@@@"], ["@ @", "@ @"], ["@ @", "@ @"],
  #    ["@ @", "@ @"], ["@@@", "@@@"], ["===", "==="]]

a1.zip(a2)
  #=> [["===", "="], ["@@@", "@"], ["@ @", "@"], ["@ @", "@"],
  #    ["@ @", "@"], ["@@@", "@"], ["===", "="]] 
Run Code Online (Sandbox Code Playgroud)

s[1..-1],其下降的第一个字符hash[0]hash[1],需要因为该字符是换行("\n")。有两条线0 => ",并===写入0 =>"===(类似的hash[1]),我可以写s.split("\n")