考虑两种循环方法,即深夜,复杂的代码。简而言之,这两个函数看起来像这样:
void foo(int x)
{
... foo(x);
}
void bar(int x)
{
... foo(x); // oops, I meant "bar"
}
有很多次我希望(我仍然希望)有一些像“自我”这样的符号调用,所以我可以像这样重写它:
void foo(int x)
{
... self(x);
}
void bar(int x)
{
... self(x); // great! this is what i meant --> bar
}
到目前为止,我能想到的唯一黑客就是编写通用函数“self”,它会在调用堆栈,获取调用者并调用它。但是,它不可能与继承一起使用:
void inherited(int x)
{
base.self(x);
}
非常感谢您的意见/想法/等: - )
答案 0 :(得分:0)
编写代码时要多加注意?我不太明白为什么你想要它,但也许我错过了什么。
简而言之,我认为如果没有反思你就无法做到这一点,那时就会有点矫枉过正。
答案 1 :(得分:0)
使用F#;)
(如果函数在自己内部递归,则要求函数标记为rec
,并且必须将“and
”相互递归函数放在一起 - 使您的错误成为编译器错误。)