在浏览一些公共API(例如android.view.View.getLocationOnScreen)时,我注意到使用day <- c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)
diffFromNearest <- function(x, modulus) {
dif <- x %% modulus
ifelse(dif > modulus %/% 2, modulus - dif, dif)
}
diffFromNearest(day, 7)
[1] 0 1 2 3 3 2 1 0 1 2 3 3 2 1 0
函数与void
的方法相当常见参数而不是简单地返回一个值。
当有多个返回值时,我看到了这种方法的好处,并且创建一个专用的复杂类型来保存它们没有意义。当函数返回某个接口并且允许用户选择最适合他的情况的实现时,它在OOP中也很有用 在我见过的许多例子中(例如上面的例子),情况并非如此。
除了这两个特定情况,我认为这种方法只有缺点:
out
参数内存,这会导致代码重复和可能的漏洞。
out
参数执行额外检查,并在未初始化时确定默认行为(内部初始化/抛出异常/返回空值或默认值)。
那么,你能想到任何好处,或者应该返回out
值的案例的一般标准吗?