1
使用R6,我想強制一個方法返回一個特定的數據類型,這可能嗎?強制返回功能的類型
例如,考慮以下因素:
A = R6::R6Class("ClassA",
public=list(
getx = function() as.integer(1)
)
)
B = R6::R6Class("ClassB",inherit=A,
public = list(
getx = function() "ABCDEF"
)
)
如果我想執行的功能getx()
返回一個整數,A的一個實例是好的,但我想阻止一個子類從返回不同的類型例如B的情況。換句話說,我希望函數在返回的內容中保持一致,而不管它實際實現的位置。
想到的解決辦法是這樣的事情,然而,不幸的是,用戶仍然可以覆蓋公共職能。如果R6有一些「鉤子」,這樣可以很好,這樣每次調用公共函數時都可以調用「檢查器」函數。不確定如何實現這一點,或者即使有可能。 –
@NicholasHamilton我不太明白你爲什麼需要這些「檢查」功能。你的類的功能只能由其他人實現派生類的類來改變。在那裏它與R中的其他一切一樣 - 假定我們是成年人,人們可以按照他們認爲合適的方式推翻和改變事物。你可以做的是提供一個「檢查器」功能,有人可以向班級申請,看看它是否符合你的規格。但我不太明白你爲什麼需要這個級別的鎖定。在這種情況下,R可能只是你的錯誤語言。 –
謝謝感謝您的評論,我爲我正在開發的一個項目提供了一個深度複雜的繼承樹,最終涉及許多動態文檔,這些動態文檔取決於每個R6對象內的函數輸出(其內容幾乎每次是不同的,但需要返回相同的結構)以便無誤地執行。沒關係,我可以通過返回一個R6或Structure對象來解決這個問題,該對象具有一個強制提供所需元素的構造方法。 –