【发布时间】:2021-12-09 07:09:04
【问题描述】:
是否可以在 for 循环中调用 min、max 和运行变量 i 而无需通过它们的名称专门引用这些对象?
以这个for循环为例
for(i in min:max) {
# do some calculation
}
假设现在我有一个函数f,其参数为mi、ma 和ii。然后,我想做
for(i in min:max) {
# do some calculation
f(mi, ma, ii)
}
mi = min、ma = max 和 i = ii 自动出现在哪里。也就是说,函数f 自动将min、max 和i 作为输入,以从for 循环环境中访问它们。
我希望我说清楚了。但是,如果有任何令人困惑的地方,请告诉我,我会尝试进一步澄清。
谢谢!
【问题讨论】:
-
您是在问是否可以在没有参数的情况下直接调用
f()并让它从调用环境中推断出min、max和i的值? -
mi 和 ma 需要动态吗?
-
没错!实际上不,mi 和 ma 不需要是动态的!我的意思是,如果可以用动态 mi 和 ma 来实现它,那就太好了!
-
可以的。我强烈反对它:它是草率的函数式编程,表明设计糟糕,容易受到各种困扰可重复性的问题的影响,故障排除可能是一项违反直觉的苦差事,以及......可能还有许多其他原因。一个函数应该只“知道”明确传递给它的东西;异常很少见,而且在元编程中通常非常有用,而不是像这样。
-
不过,底线是,这很可能是一个诱人的想法(对于一个有点懒惰的交互式 R 工作),但在许多其他方面是一个非常糟糕的想法。