r - 没有其他包中的类的定义
问题描述
我在大型代码库中遇到了一个奇怪的问题,无法真正弄清楚从哪里开始调试。长话短说,有第三方包,我们会打电话foo
给DESCRIPTION
Package: foo
Type: Package
Title: Foo
Version: 0.1.0
Author: Foo Dev
Maintainer: Foo Dev <foo@foo>
Description: Does foo
License: MIT
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.1.2
NAMESPACE
# Generated by roxygen2: do not edit by hand
exportClasses(FooA)
exportClasses(FooB)
和代码
#' @export
setClass("FooA", representation())
#' @export
setClass("FooB", representation())
我在另一个包中使用这个包,我们称之为bar
,
Package: bar
Type: Package
Title: Bar
Version: 0.1.0
Author: Bar Dev
Maintainer: Bar Dev <bar@bar>
Description: Does bar
License: BSD
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.1.2
Imports:
foo
我在哪里定义以下泛型
#' @name bar
#' @rdname bar
setGeneric(
"bar",
function(fooa, foob) { standardGeneric("bar") })
#' bar
#'
#' @param fooa FooA
#' @param foob FooB
#' @name bar
#' @rdname bar
#' @aliases bar,FooA,FooB-method
#' @export
setMethod(
"bar",
signature(fooa = "FooA", foob = "FooB"),
function(fooa, foob) {
}
)
我检查了包裹和繁荣,我得到:
Found the following significant warnings:
Warning: in method for ‘bar’ with signature ‘fooa="FooA",foob="FooB"’: no definition for classes “FooA”, “FooB”
如果我改为signature
例如
signature(fooa = "FooA", foob = "ANY"),
或者
signature(fooa = "ANY", foob = "FooB"),
事情进展顺利。我还可以定义各种泛型,只要它们当时只调度其中一个类。
我使用R version 4.1.1 (2021-08-10)
, 如果这在这里相关。
这里发生了什么?
解决方案
推荐阅读
- interrupt - Cortex M 架构中的 uint16_t 和 uint32_t 中断是否安全?
- c# - 找不到方法:'System.Collections.ObjectModel.Collection`1
- vega-lite - vega-lite中的散点图矩阵
- javascript - 在javascript中对具有许多条件的数组进行排序
- html - HTML 滚动条仅显示部分框边框
- typescript - 如何使用 tyescript 从 azure 数据库中检索所有数据?
- java - 詹金斯声纳扫描仪 vs Maven 声纳:声纳目标
- javascript - 打字稿:在类型'{“A”:字符串上找不到带有“字符串”类型参数的索引签名;}
- ruby-on-rails - 在一个创建表单上保存多条记录取决于关联的项目
- javascript - 如何正确使用 document.querySelectorAll()?