【发布时间】:2015-11-19 16:47:01
【问题描述】:
如何在函数内部定义和返回函数?
例如,我们有这样一个函数:
float foo(float val) {return val * val;}
现在,需要一个类似 bar 的函数:
typedef float (*func_t)(float)
// Rubish pseudo code
func_t bar(float coeff) {return coeff * foo();}
// Real intention, create a function that returns a variant of foo
// that is multiplied by coeff. h(x) = coeff * foo(x)
到目前为止,我唯一想到的就是使用 lambda 或一个类。有没有一种直接的方法可以做到这一点而不会被不必要地复杂化?
【问题讨论】:
-
你的意思是
typedef float (*func_t)(float);? (注意 before func_t 的星号,而不是 after) Like:将 func_t 定义为一个指向接受 float 并返回 float 的函数的指针? -
@NathanOliver 它在评论中说垃圾伪代码。可以肯定的是,除了人类编译器之外,任何人都清楚其意图。为了以防万一,添加了另一条评论。
-
@FabioTurati 是的,打错字了。
-
@NathanOliver - 我有点赶时间。感谢您的评论。 :D
-
如果不使用 lambda 或类,就没有办法做到这一点——而且我不确定你想用它们做多少事情。添加 Lambda 的部分原因是允许按照您所追求的路线进行阴谋。