2013-09-26 50 views
0

我試圖想象如果可以創建一個可以模擬嵌套哈希訪問的類,其中'嵌套'級別的計數將是任意的。例如:模擬嵌套哈希括號的Ruby屬性訪問

fakeHash[:something][:other] # Results in single property call on fakeHash 
+2

相應的「財產呼叫」是什麼樣的? –

+0

如果嵌套層次是任意的,那麼在'... [] [] ...'序列的中間是什麼決定,是否有更多'[]'來到或者是它返回屬性? – sawa

+0

@ Abe-只是一個可以將所有鍵作爲數組訪問的函數。 – Yarin

回答

1

我不能返回對象recursively-相反,我需要能夠處理在根對象級別的所有鍵,並從那裏返回一個值。

不幸的是,沒有辦法。這是因爲[]是一種方法,能夠無限次(可能)調用該方法的唯一方法是使用遞歸(這意味着您返回的對象包含方法[]而不是最終對象)。

即使它存在這將是非常糟糕的設計。無論你如何處理這個問題,你都會犯這樣的錯誤,而產生的代碼可能會讓其他程序員感到困惑。


當然,你總是可以模擬類似如下:

class Nested 
    def [](s) 
     # do something with s 
     return self 
    end 
end 

Here的一個例子。

+1

@ Jeffrey-謝謝,但是這個是不是我所需要的(儘管沒有downvote你) - 我不能遞歸地返回對象 - 相反,我需要能夠處理根對象級別的所有鍵,並從那裏返回一個值。 – Yarin

+0

@Yarin編輯。 – Shoe

+0

認爲如此,謝謝。這是一個肯定的黑客,也許最好的我不能這樣做.. – Yarin