arrays - 在 Ruby 中一行打印数组元素

标签 arrays ruby hash printing puts

我有以下 Ruby 哈希:

hash = {
0 => "
===
@@@
@ @
@ @
@ @
@@@
===",
1 => "
=
@
@
@
@
@
="}

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

test = [hash[0], hash[1]]

test1 = [hash[0], hash[0]]

如果我想将 test1 打印到控制台,结果应该如下所示:

======
@@@@@@
@ @@ @
@ @@ @
@ @@ @
@@@@@@
======

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

====
@@@@
@ @@
@ @@
@ @@
@@@@
====

但是,当我使用putsprint 时,结果总是一个接一个地打印,而不是在同一行。

最佳答案

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

puts a1.zip(a1).map(&:join)
======
@@@@@@
@ @@ @
@ @@ @
@ @@ @
@@@@@@
======

puts a1.zip(a2).map(&:join)
====
@@@@
@ @@
@ @@
@ @@
@@@@
====

注意:

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

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

s[1..-1],它删除了 hash[0]hash[1] 的第一个字符,是需要,因为该字符是换行符 ("\n")。如果 0 => "=== 这两行被写成 0 =>"=== (类似于 hash[ 1]), 我本可以写成 s.split("\n")

关于arrays - 在 Ruby 中一行打印数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57280164/

相关文章:

c++ - 如何在 Ruby 和另一种语言之间共享文本文件(或互斥量/信号量)?

php - mcrypt 已弃用? - 如何在 PHP 中正确加密和保存密码?

Ruby 内部机制以及如何保证哈希值的唯一性

java - 导致冲突的位模式的什么属性?

ruby-on-rails - 如何在 Ruby on Rails 中实现 Petitions 和 User 模型之间的关系?

Ruby,哪个异常最适合处理未设置的环境变量?

arrays - 将项目添加到数组的其他方法

arrays - VB.NET需要使用MessageBox进行错误检查的指南

Javascript大数组挂起

递归函数上的 char * 数组操作