首先,我有一个名为DataBaseLayer
的程序包,它有一个名为LoadFromTable(data_request)
的S3方法。其次是另一个包RiskCalculator
,它确定了几种类型的风险,并通过包DataBaseLayer
来请求数据库。在“触发”RiskCalculator
(通过其中定义的执行功能)之前,建立到数据库某个模式的连接并且方法LoadFromTable
将引用该特定模式。在命名空间中覆盖不可见的S3方法
对于一些我需要执行的测试,我必须根据data_request
中的值进入LoadFromTable(data_request)
来切换模式。因此,我真正需要的是在LoadFromTable
中插入一点点检查。值得注意的是,目前只有一种默认的方法实现了,即LoadFromTable.default
,因此即使只在该特定方法中插入该检查也足够了。
我的问题是这样两个方面:
1.是否有插入之前的任何LoadFromTable
方法的一段代码的一般方法被调用时,天真地说:刚UseMethod("LoadFromTable", data_request)
被“叫”前插入一段代码。
2.如果没有这种方式,我们至少能够在调用LoadFromTable.default
之前插入一段代码(因为在我的情况下,现在就足够了)。
作为最后一点,我可以想象你可能会说整个结构应该改变,然而,我同意这不是一个选项,因为我不是这些软件包的所有者。
感谢您的帮助。
Data_request是传递给RiskCalculator中的某个函数,并传递给DataBaseLayer中的LoadDataFrame还是RiskCalculator制造data_request? –
更具体的一点是:RiskCalculator调用GetRisks()函数,该函数位于一个名为Common的包中,该函数创建data_request并在DataBaseLayer中调用LoadFromTable(data_request) '。此外,RiskCalculator导入Common和Common导入DataBaseLayer。 –
您确实可以建议重写'GetRisks()',然后这将解决一个非常具体的问题,因为'LoadFromTable'以各种方式被调用,而不仅仅是'GetRisks()'。 –