将python代码翻译为ruby

时间:2013-09-20 17:50:15

标签: python ruby

好吧,我是ruby的新手,我有这个ID生成器生成一个基于Time.now.to_f / time.time()的ID,然后是一个8长度的id,例如这是工作的python版本

def anonId(a,b):
        a = a.split('.')[0]
        if len(a) > 4: i = a[6:]
        else: i = a
        return "".join(str(int(x) + int(y))[-1] for x, y in zip(i, b[4:]))

anonId("1379697991.99",'26002859') 

会生成'9740'的ID 在红宝石中,我尝试了类似的东西,但我还不太了解红宝石,但还不知道如何做到这一点,但这是我到目前为止所拥有的

def anonId(number,id)
    if String(number).length > 4 then number = String(number).split(".")[0][-4..-1] else number end 
    [number,id[4..-1]].zip.each do |x,y|
       #this is where I get stuck at, I'm not sure if the above is correct

    end
end

基本上,我需要知道如何将python代码转换为ruby

1 个答案:

答案 0 :(得分:3)

  • 在Ruby中,你不能只是迭代一个字符串 - 你必须指定如何 (行,字节,代码点或字符)。
  • zip是一个关于数组的方法,请使用an_array.zip(other_array)
  • 如果要遍历数组(或任何可枚举的数据),请对每个元素执行一些操作并将结果存储在数组中,使用map

这会导致number.chars.zip(id[4..-1].chars).map do |x,y|

注意x和y是字符串。将它们转换为x.to_i等的整数。