将代码从Python转换为Ruby

时间:2015-01-13 09:17:23

标签: python ruby

我在Python中有这个代码:

parameters = { 'a': 1, 'b': 2 }
urllib.urlencode(dict(itertools.chain(parameters.iteritems(), [('aaa', 'bbb')])))

Ruby中的等效代码是什么?我所知道的是,我必须使用CGI::escape代替urllib.urlencodeparameters.iteritems() - 可能是parameters.map。剩下的是什么?

2 个答案:

答案 0 :(得分:1)

您的Python代码输出:

a=1&b=2&aaa=bbb

在Ruby中,我们可以这样做:

require 'cgi'

parameters = {a: 1, b: 2}

encoded = parameters.merge(Hash[*['aaa', 'bbb']])
    .map { |key, value| "#{CGI.escape key.to_s}=#{CGI.escape value.to_s}" }
    .join('&')

p encoded

哪个输出相同:

a=1&b=2&aaa=bbb

它比Python代码更长,但恕我直言也稍微更具可读性......如果你想通过制作一个接受哈希而不仅仅是字符串的版本CGI::escape,你可以缩短它。

答案 1 :(得分:0)

我是这样做的:

parameters.merge({ 'aaa' => 'bbb' }).map{ |k, v| "#{CGI.escape(k)}=#{CGI.escape(v)}" }.join("&")