Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 将散列转换为字符串的最短方法_Ruby - Fatal编程技术网

Ruby 将散列转换为字符串的最短方法

Ruby 将散列转换为字符串的最短方法,ruby,Ruby,有这样一个散列: params = { k1: :v1, k2: :v2, etc: :etc } k1="v1", k2="v2", etc="etc" 我需要将其转换为如下字符串: params = { k1: :v1, k2: :v2, etc: :etc } k1="v1", k2="v2", etc="etc" 我有一个工作版本: str = "" params.each_pair { |k,v| str << "#{k}=\"#{v}\", " } str=“”

有这样一个散列:

params = { k1: :v1, k2: :v2, etc: :etc }
k1="v1", k2="v2", etc="etc"
我需要将其转换为如下字符串:

params = { k1: :v1, k2: :v2, etc: :etc }
k1="v1", k2="v2", etc="etc"
我有一个工作版本:

str = ""
params.each_pair { |k,v| str << "#{k}=\"#{v}\", " }
str=“”
params.each|u pair{k,v|str尝试以下方法:

str = params.map {|p| '%s="%s"' % p }.join(', ')
在行动中看到它

试试这个

hash.collect { |k,v| "#{k} = #{v}" }.join(" ,")

每个对象都必须使用ruby.yep中的方法,我知道,但是输出与我需要的非常不同,更好,但我需要双引号中的值…hash.collect{k,v}“{k}='{v}'}。join(“,”)。当我们试图更改双引号和单引号的顺序时,编译器会抛出反斜杠…hash.collect{k,v}'''.{k}v}.join(“,”)…这也是一个选项,但o/p是“k1=\“v1\”,k2=“v2\”,etc=“etc\”“太好了,它是如何工作的?我觉得我的头脑被漫长的PHP岁月严重扭曲了…”(Djkastra是对的——有些语言确实严重损害了人类的健康。)minds@oldergod,对不起?您只需在代码中调用
params.map
,它应该work@JamesEvans,你在问它是如何工作的?很简单。map块接收一个key/val数组作为第一个参数,然后我们将它馈送到
%
,这是我所做的
printf
的简写我不知道这是printf的缩写,这正是我想要的。谢谢,回答得很好。