[问题] 关于func的引数仍然是func 该怎么称呼?

楼主: EngRookie (EngRookie)   2017-04-22 15:14:39
举个小例子
typedef int(*funPtr)(int, int);
int add(int a,int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
void Math(funPtr callback)
{
printf("Time to Math class, result = %d\n", callback(5, 1));
}
int main()
{
Math(add);
Math(sub);
char c = getchar();
return 0;
}
其中的 Math(add) 该怎么叙述他呢?
Ans1: 我把add注册到Math里面
Ans2: add 是一个callback func 并放到 Math 里面
大家听到callback func就知道这func是引数的意思吗?
不好意思 新手问题
谢谢
作者: x000032001 (版废了该走了)   2017-04-22 15:24:00
2 你并没有注册他 只是传进去 1很奇怪
作者: cuteSquirrel (松鼠)   2017-04-22 15:45:00
Math(add)是把add这只function的以function pointer的形式传入Math的参数列。让里面的Math呼叫可以用function pointer来呼叫add, 做两数相加的加法运算。Function pointer 提供了一种弹性的函数呼叫方式。以原po的例子来说,可以再实作两个数学函数,mul做乘法,div做除法。扩展成一个小型的四则运算程式。Callback function在原po的例子里是add和sub. add和sub这两个以function pointer传入Math(), 在Math()里面被呼叫。
作者: kyuudonut (善良老百姓)   2017-04-22 19:17:00
我觉得改一下函数命名会比较好阅读一点
作者: s89227 (Kei)   2017-04-22 22:47:00
在其他语言好像叫delegate?
作者: cuteSquirrel (松鼠)   2017-04-22 23:20:00
推。像是c#的delegate
作者: uranusjr (←這人是超級笨蛋)   2017-04-22 23:31:00
不过 delegate 在某些语境下又会有完全不同的意思 XD
作者: steve1012 (steve)   2017-04-22 23:45:00
应该知道吧
作者: loveflames (咕啾咕啾魔法阵)   2017-04-23 08:26:00
C++讲delegate,我第一个想到的是delegating ctor
作者: CoNsTaR ((const *))   2017-04-24 19:18:00
higher-order function
作者: Chikei ( )   2017-04-25 01:03:00
https://en.wikipedia.org/wiki/Higher-order_function不过用higher-order有不小的机会会被问这是啥意思...XD
作者: Neisseria (Neisseria)   2017-04-25 09:40:00
higher-order function +1
作者: ah7675 (阿毛)   2017-04-26 00:12:00
每次都要搞名词解释 真的很烦是不是都用名词当斗争工具? 讲赢定义的人是老大?
作者: CoNsTaR ((const *))   2017-04-26 05:38:00
楼上 这里的老大只有一个喔 请去拜见水晶球神不过这篇本来就是在问名词,给名词解释问题在哪?
作者: ronin728 (浪人)   2017-04-26 11:29:00
只传函数进去不算callback,必须是要是下个流程才算(CPS也就说传进来的函数也必定只能以tail call的方式使用
作者: Killercat (杀人猫™)   2017-04-26 22:37:00
你可以查一下学一下functor, 近代的c++多半用这结构体来表示一个function 而不是把point of function传入优点很多,包括了简易的型别安全以及易用性 可以学一下C++11以前须用boost::function,11后有std::functionhttps://tinyurl.com/7lsdvjj
作者: Sidney0503 (Sidney0503)   2017-04-27 07:23:00
名词是设计者的问题 template在c++ java不一样apply bind在c++ js不一样for each拿到index还是内容物 在py js不一样不过打架久了大家也渐渐知道 先说是哪家语言的定义如果你觉得烦 那就可以加入语言开发社群或委员出一份力改善这种到处不一样的状况
作者: Chikei ( )   2017-04-27 11:25:00
名词解释有啥好烦的,难道要吵一架吵完之后才发现两个人跟本是在讲不同的东西只是刚好共用名词有比较好吗XDD
作者: CoNsTaR ((const *))   2017-04-27 12:30:00
通常在讨论语言特性的时候会用higher-order function用 category 讨论程式实作会用 functor 这个词虽然这两个词在 theorical computer science 里实际上指的是同一个东西,但是在不同情境下我们会用不同的词来讨论另外, functor 还分 contravariant、 convariant 两种,但 higher-order function 就没讨论这么多了不过 functor 在很多语言里已经有自己的意思了,和 TSC里的定义不同functor 虽然也可以传入、回传函数,但是专指这样的函数会用 higher-order function 来称呼

Links booklink

Contact Us: admin [ a t ] ucptt.com