2015-11-18 42 views
0

我正在從Python重寫一個案例到Ruby,並且有一個問題。 該程序從終端「蟒蛇test.py 1010010101」從Python到Ruby

def to_str(data): 
"""Helper function to convert lists and sets to string. 
Args: 
    data (LIST, SET): list or set to convert 
Returns: 
    STRING: result string 
""" 
if isinstance(data, list): 
    res = ''.join([str(i) for i in data]) 
elif isinstance(data, set): 
    res = ''.join(data) 
return res 

幾乎做到了對Ruby的讀取數據,但有「未定義的方法‘加入’爲# Tryed .to_a,這不利於。

我的Ruby代碼:

def to_str(data) 
    if data.is_a? Array 
     res = data.map &:to_s.join('') 
    elsif data.is_a? Set 
     res = data.join('') 
    end 
    return res 
    end 
+0

Python代碼沒有多大意義。 – user2357112

+0

這是來自此代碼的模塊https://gist.github.com/quarckster/d7661f26f71b302e1052 –

回答

0
2.2.2 :001 > require 'set'                                            
=> true 
2.2.2 :002 > [1, 2, "test"].join                                           
=> "12test" 
2.2.2 :003 > Set.new([1, 2, "test"]).to_a.join                                       
=> "12test" 

這是否解決問題了嗎?

0

對不起,我不完全具備的背後原因的理由,但你需要用的map枚舉參數在括號中像下面,否則會看到符號:to_s並嘗試單獨使用join方法。 (即:NoMethodError:未定義的方法`加入爲:to_s:符號)

def to_str(data) 
    if data.is_a? Array 
    res = data.map(&:to_s).join('') 
    elsif data.is_a? Set 
    res = data.join('') 
    end 
return res 
end 

編輯:它可能有一些做&:to_s是一個進程內

+0

你正在修復工作,但現在它從第二次加入未定義的方法 –

+0

@JackBacke以下應該修復它:'res = data。 to_a.join( '')'。我從來沒有使用'Set'對象,但看起來與數組類似,只不過它是一個具有唯一方法集的對象類型。看看這裏:http://ruby-doc.org/stdlib-2.2.3/libdoc/set/rdoc/Set.html獲取'Set'對象的方法列表 –