English · PDF 312
函数返回的值通常是它求值的最后一条语句,但你可以选择使用 return() 提前返回。我认为最好把 return() 的使用保留下来,用于表示你可以用一个更简单的方案提前返回。这样做的一个常见原因是输入为空:
complicated_function <- function(x, y, z) { if (length(x) == 0 || length(y) == 0) { return(0) } # 复杂的代码写在这里 }
另一个原因是你的 if 语句有一个复杂代码块和一个简单代码块。例如,你可能会写出这样的 if 语句:
f <- function() { if (x) { # 需要 # 用 # 很多 # 行 # 才能 # 表达 # 的 # 事情 } else { # 返回某个简短的东西 } }
但如果第一个代码块非常长,等你读到 else 时,已经忘记了条件是什么。一种重写方法是对简单情况使用提前返回:
f <- function() { if (!x) { return(something_short) } # 需要 # 用 # 很多 # 行 # 才能 # 表达 # 的 # 事情