当两个类足够相似时,我经常遇到希望对两个类使用相同方法的情况。例如:
func.matrix = function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}
func.data.frame = function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}
如何保存冗余?
当两个类足够相似时,我经常遇到希望对两个类使用相同方法的情况。例如:
func.matrix = function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}
func.data.frame = function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}
如何保存冗余?
如果这两个功能实际上是相同的,那么您可以执行以下操作以至少节省一些输入:
func.matrix <- func.data.frame <- function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}
func.matrix
# function(m) {
# stopifnot(ncol(m) == 2)
# c(mean(m[, 1]), sd(m[, 2]))
# }
func.data.frame
# function(m) {
# stopifnot(ncol(m) == 2)
# c(mean(m[, 1]), sd(m[, 2]))
# }
正如您在评论中提到的那样,另一种选择是将公共部分移出它自己的函数(重构,我猜它被称为?)并在您的函数中调用它。