【发布时间】:2018-08-31 09:46:41
【问题描述】:
在现代语言(例如python)中,您可以执行类似的操作
def do_a_thing(foo,bar):
thing = (... do a thing to foo(bar) ...)
return thing
如何在 SAS 中做到这一点(或类似的事情)?在我的具体应用程序中,我定义了一堆函数,并且需要对所有函数做同样的事情,所以我认为有一个函数将函数作为参数然后 做这件事会很好 到那个函数,然后在需要的地方应用它。 “明显”的解决方案不起作用,例如在proc fcmp 这样做:
function do_a_thing(foo,bar);
thing = (... do a thing to foo(bar) ...)
return(thing);
endsub;
这会失败,因为 SAS 不知道任何名为 foo 的函数,并引发错误。
我预计答案会涉及一些宏诡计,但我发现宏系统有些不透明,无法完全弄清楚。最好的方法是什么?
【问题讨论】:
-
SAS 没有用户定义的函数。所以宏是模拟它们的唯一方法。伤心!
-
无论
proc fcmp让你做什么,对我来说肯定看起来像用户定义的函数吗?还是我误会了你? -
这可能是一种将宏打包到函数中,将其引入正常范围并使其持久化的方法。大多数用户没有那么深入。
-
如何对函数做一些事情?你使用一个函数根据你给它的输入返回一些东西。您如何用特定语言处理特定问题取决于该语言的工作方式。发布您想要解决的特定问题以及您尝试解决的问题。
-
@Tom:就是这样,我在问如何在 SAS 中解决这个问题(根据指定的函数做某事,该函数可能会有所不同)。重现这种功能,不管怎么做,是我想要解决的特殊问题。