我試圖想象如果可以創建一個可以模擬嵌套哈希訪問的類,其中'嵌套'級別的計數將是任意的。例如:模擬嵌套哈希括號的Ruby屬性訪問
fakeHash[:something][:other] # Results in single property call on fakeHash
我試圖想象如果可以創建一個可以模擬嵌套哈希訪問的類,其中'嵌套'級別的計數將是任意的。例如:模擬嵌套哈希括號的Ruby屬性訪問
fakeHash[:something][:other] # Results in single property call on fakeHash
我不能返回對象recursively-相反,我需要能夠處理在根對象級別的所有鍵,並從那裏返回一個值。
不幸的是,沒有辦法。這是因爲[]
是一種方法,能夠無限次(可能)調用該方法的唯一方法是使用遞歸(這意味着您返回的對象包含方法[]
而不是最終對象)。
即使它存在這將是非常糟糕的設計。無論你如何處理這個問題,你都會犯這樣的錯誤,而產生的代碼可能會讓其他程序員感到困惑。
當然,你總是可以模擬類似如下:
class Nested
def [](s)
# do something with s
return self
end
end
Here的一個例子。
相應的「財產呼叫」是什麼樣的? –
如果嵌套層次是任意的,那麼在'... [] [] ...'序列的中間是什麼決定,是否有更多'[]'來到或者是它返回屬性? – sawa
@ Abe-只是一個可以將所有鍵作爲數組訪問的函數。 – Yarin