←
PDF 312 / 520 Explicit Return Statements
→
English · PDF 312
Original PDF page 312
中文 · 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) } # 需要 # 用 # 很多 # 行 # 才能 # 表达 # 的 # 事情