3

我们有一个我们定义的 S3 类plot和其他通用函数。我们不确定...必须去哪里。有两种选择:

  1. plot.hadronacf(x, col = "black", ...)
  2. plot.hadronacf(x, ..., col = "black")

同样对于print.summary.

在它的用法上summary似乎不一致:

summary(object, ...)

## Default S3 method:
summary(object, ..., digits)
## S3 method for class 'data.frame'
summary(object, maxsum = 7,
       digits = max(3, getOption("digits")-3), ...)

## S3 method for class 'factor'
summary(object, maxsum = 100, ...)

## S3 method for class 'matrix'
summary(object, ...)

## S3 method for class 'summaryDefault'
format(x, digits = max(3L, getOption("digits") - 3L), ...)
 ## S3 method for class 'summaryDefault'
print(x, digits = max(3L, getOption("digits") - 3L), ...)

因为print省略号似乎结束了:

print(x, ...)

## S3 method for class 'factor'
print(x, quote = FALSE, max.levels = NULL,
      width = getOption("width"), ...)

## S3 method for class 'table'
print(x, digits = getOption("digits"), quote = FALSE,
      na.print = "", zero.print = "0",
      right = is.numeric(x) || is.complex(x),
      justify = "none", ...)

## S3 method for class 'function'
print(x, useSource = TRUE, ...)

似乎大多数情况下都使用最后的省略号。对此有一些指导方针吗?

4

1 回答 1

5

没有“正确”的方法可以做到这一点。这是一个偏好问题或基于您认为该功能应如何处理“额外参数”的设计决定。例如,使用两种变体 A 和 B

summary(object, maxsum = 100, ...)  # A
summary(object, ..., maxsum = 100)  # B

将 a 传递给版本 B 的唯一方法maxsum是通过函数调用中的命名参数。而版本 A 将采用第二个未命名参数并将其传递给maxsum. 它们的不同之处在于该参数对函数调用的“重要性”。

于 2019-01-08T17:02:02.973 回答