【发布时间】:2018-01-12 06:20:26
【问题描述】:
您可以在R中使用以下代码创建一个函数,省略return命令后的括号,但return语句的行为与预期不符,似乎什么也不做:
> func <- function(x) { return; print(x) }
> func(1)
[1] 1
包含括号的行为符合预期:
> func <- function(x) { return(); print(x)}
> func(1)
NULL
为什么?没有参数的 return 语句是否有目的,如果没有,为什么它不会导致异常?
【问题讨论】:
-
在第一种情况下,
return没有做任何事情,因为没有参数并且函数没有执行。这就像在控制台上调用return即func <- function(x) { print(return)}; func(1)# .Primitive("return")在第二种情况下,它在参数中没有任何内容。所以它打印 NULL -
@akrun 所以一般来说调用一个没有任何参数的函数只是作为一个空操作?
-
@TimBiegeleisen 我想是的。例如
f1 <- function(x) {print(mean)};f1(1)# function (x, ...) UseMethod("mean"); -
在第一个示例中,您没有调用
return。你期待什么? -
我想要得到的是,如果这什么都不做,为什么它甚至是有效的语法?为什么不只是崩溃?它有我不知道的目的吗?