2013-12-12 73 views
1

我正在使用rserve-client gem,它允許Ruby腳本通過TCP/IP與R通信。其中一部分包括序列化Ruby對象以通過線路發送,並透明地轉換返回到Ruby的結果。奇怪的Ruby數組符號'| WN |'?

但是,返回的數組對象有一個奇怪的符號,這些奇怪的符號是我以前從未見過的,當時R表被轉換回Ruby。

例如一個R表有一個名爲id列和3的值返回:

res 
=> [|WN|"id"=[1, 
    2, 
    3] 
res.to_s 
=> "[id=[1, 2, 3]]" 
res.class 
=> Array 
res.inspect 
=> "#<Array:70227288405140 [id=[1, 2, 3]]>" 
res.class.ancestors == Array.ancestors 
=> true 
=> [[1, 
    2, 
    3]] 

任何想法,這是什麼?理想情況下,我想將其轉換爲散列以使用ID ... to_hash不會得到它。 .to_a結果於:

回答

1

這不是一個有效的數組表示法。我對這種寶石沒有任何具體的瞭解,但我猜想作者會走向對你說謊的令人沮喪的道路。這是一個顯示類似行爲的簡單類。

class A < Array 
    def class 
    Array 
    end 

    def inspect 
    "[|WN| blah=[1,2,3]]" 
    end 
end 

輸出

foo = A.new #=> [|WN| blah=[1,2,3]] 
foo.class #=> Array 
foo.class.ancestors == Array.ancestors #=> true 

這種做法是不是不尋常,因爲它應該是。 ActiveRecord::Relation至少用於做類似的事情。