如何用管道分隔打印哈希值

kat*_*hri 3 ruby rubygems ruby-on-rails

我有一个哈希数组,如下所示:

sample = {:a=>1, :b=>2, :c=>{:c1=>abc, :c2=>xyz}, :d=>3}
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

1|2|abc|xyz|3
Run Code Online (Sandbox Code Playgroud)

但如果我使用命令:sample.values.join("|")

我的输出显示如下:

1|2|c1abcc2xyz|3
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题。提前致谢。

tok*_*and 5

sample.values.flat_map { |x| x.is_a?(Hash) ? x.values : [x] }.join("|")
#=> "1|2|abc|xyz|3"
Run Code Online (Sandbox Code Playgroud)