我想定义一个返回标量返回值的 S4 方法。这里我的意思是标量值,与向量相反。
setGeneric("getScalar", function(value, ...)
standardGeneric("getScalar")
)
setMethod("getScalar",
signature(value = "ANY"),
def = function(value, ...) getScalar(value,...), ## call external function
valueClass = "atomic" ### atomic is false, what should I do ?
)
我不能通过它的输出覆盖该方法,我的意思是我不能定义许多具有相同签名和不同返回 valueClass 的函数:numeric , integer , character ,.. 那么我该怎么做呢?
编辑以提供更多上下文:
我认为原子在这里令人困惑。我的意思是标量数值或布尔值或字符,长度为 1。为了提供更多上下文,我的包中将包含 3 个函数:
dbGetQuery :return a list/data.frame : i.e some table rows
dbGetScalar :return a scalar value : i.e count(*),table_name,..
dbGetNoQuery :return nothing : update/insert actions
它是对 DBI 接口的扩展。
编辑2
我们可以假设标量是一个长度为 1 的向量。但是我不能用 S4 来表达这个条件。在 c# 或 c 中,我会写
double[] // vector
double // scalar
也许我应该更改我的函数的名称。