Rascal文档中有一个example of a function,它以函数作为参数:
int f(int x, int (int) multi){ return multi(x); }
相反,返回函数的函数的语法是什么?
我找不到示例并尝试了以下方法:
(int (int)) f() {return (int y) {return y;}}
但是在表示中出现语法错误。
int two(int n) = 2 * n;
int(int) g() = two;
函数two
乘以2,然后g
返回函数two
。观察到g
的返回类型是int(int)
,这是一种描述返回int
并具有一个int
自变量的函数的类型。
可以通过内联定义获得类似的效果:
int(int) g() = int(int n) { return 2 * n; };
您可以在一些测试中的一些文件中找到更多示例:
lang::rascal::tests::basic::Functions
lang::rascal::tests::functionality::FunctionComposition
在f
的返回类型中保留最外面的parens
int
返回的匿名函数的返回类型f
f
的return
语句后的半数int (int) f() { return int (int y) { return y; } ; }