ruby - 是否有一个 Ruby 单线器来 join() 嵌套的 Ruby 数组,内部/外部数组有不同的 join() 字符串?
问题描述
为了:
a = [ ["John", "Doe"], ["Sue", "Smith"]]
所需的输出是:"John Doe, Sue Smith"
蛮力代码很简单:
a = [ ["John", "Doe"], ["Sue", "Smith"]]
name_array = []
a.each { |n| name_array << n.join(" ") } # first, inner join w/ space
s = name_array.join(", ") # then, outer join with comma
但是在 Ruby 中是否有更简洁的方法(单行?)来实现这一点?
解决方案
映射和加入
您可以使用Array#map和Array#join来做到这一点。例如,在 Ruby 2.7.1 中:
array = [["John", "Doe"], ["Sue", "Smith"]]
array.map { _1.join ?\s }.join ", "
#=> "John Doe, Sue Smith"
如果你没有使用最近的 Ruby,或者发现更明确的语法更可取,你可以像这样做同样的事情:
array.map { |subarray| subarray.join " " }.join ", "
#=> "John Doe, Sue Smith"
当然还有其他方法可以做到这一点,但这个单行似乎适合您的示例和用例。
推荐阅读
- python - 在 Python 中使用 Selenium获取每个网页的值
- javascript - SVG:相对于其他组的位置组
- ansible - 如何列出具有大于平均 RAM 的主机?
- scikit-learn - 同时运行多个具有并行性的 KMeans
- debugging - 播放框架:如何强制使用相同的线程执行上下文?
- java - 写入未进入管道的通道的消息
- docker - 使用多个命令时运行 Cypress dockerized 传递参数
- visual-studio - 将测试用例与测试计划相关联的问题
- python - 删除python蓝图类中所有未实现的方法
- python - tkinter - 如何在条目中自动添加斜杠?