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对象来解决这个问题,该对象具有一个强制提供所需元素的构造方法。 –