我从git 上的一个开源存储库中获得了这个。这显示了 S3 类的泛型和方法的编写。但我不理解分配函数的符号或约定。以下是我的问题:
- 使用反引号
``
来定义函数名。通常我们不会使用反引号甚至双引号来分配变量/函数,但我看到这种情况发生了很多次。这是命名约定吗? - 为什么
.
包含在 blob 名称之前?通常它不会被称为 blob 而一个方法是 method.blob 吗? - 为什么那里有
[
括号?特别是,[<-
和[[<-
。我们是否在执行某种双重分配?
希望有人能够阐明什么是哈
#' @export
`[.blob` <- function(x, i, ...) {
new_blob(NextMethod())
}
#' @export
`[<-.blob` <- function(x, i, ..., value) {
if (!is_raw_list(value)) {
stop("RHS must be list of raw vectors", call. = FALSE)
}
NextMethod()
}
#' @export
`[[<-.blob` <- function(x, i, ..., value) {
if (!is.raw(value) && !is.null(value)) {
stop("RHS must be raw vector or NULL", call. = FALSE)
}
if (is.null(value)) {
x[i] <- list(NULL)
x
} else {
NextMethod()
}
}