【发布时间】:2015-09-27 19:42:54
【问题描述】:
我有一个带有通用功能的包PackageA:
#' doWork
#'
#' Do some work!
#'
#' @export
setGeneric(
"doWork",
function(x) {
standardGeneric("doWork")
})
setMethod(
"doWork",
signature = c("numeric"),
definition = function(x) {
x == 10 # Some logic...
}
在依赖PackageA的PackageB中,我想给doWork添加更多方法:
#' @import PackageA
setMethod(
"doWork",
signature = c("character"),
definition = function(x) {
length(x) == 1 && x == "10" # Some more logic...
}
这行得通。但是,这意味着PackageB的用户也必须library(PackageA)。
这失败了:
library(PackageB)
doWork("10") # Fails!
这行得通:
library(PackageA)
library(PackageB)
doWork("10")
我想在PackageB 中使用来自PackageA 的泛型,但不需要加载PackageA 以仅使用PackageB 中的方法。
我怎样才能做到这一点?
【问题讨论】: