现在有很多东西在我脑海中一直存在。只要考虑这个函数:带一个参数并返回它的函数
template<typename T>
T foo(const T& value)
{
return value;
}
这是任何给定值的最简单的函数包装。然而,我一直在想它是否有一个“标准名称”(许多人会认识到,比如map,filter,sqrt等功能)。他们是否需要使用这种功能的知名问题?
现在有很多东西在我脑海中一直存在。只要考虑这个函数:带一个参数并返回它的函数
template<typename T>
T foo(const T& value)
{
return value;
}
这是任何给定值的最简单的函数包装。然而,我一直在想它是否有一个“标准名称”(许多人会认识到,比如map,filter,sqrt等功能)。他们是否需要使用这种功能的知名问题?
下面是一个explanation为身份功能
作为参考,SO通常更喜欢答案是有些自包含(自然地欢迎提供足够的参考链接)。参考[meta](http://meta.stackexchange.com/q/8231)。这不是我的顺口溜,但我想你想知道。 – Useless 2012-07-18 14:59:34
它是一种身份的功能。例如,当您必须将投影传递给其他函数并且不需要任何投影时,它非常有用。不,不是非常有用,但这是你从一个基本上什么都不做的功能中可以得到的最好的。
没有对函数内部参数进行任何更改,我不确定它是否有任何编程术语。
你也不能说这是一个完整的身份,因为返回的对象不是同一个对象,因为你按值返回。
我会说这是一个克隆功能。
下面是关于使用上[哈斯克尔] ID功能很好的例子。我知道这是为C++,但那里的例子,在哪里和什么时候使用id函数是非常好的:http://stackoverflow.com/questions/3136338/uses-for-haskell-id-function – hectorg87 2012-07-18 09:00:15
@ hectorg87不错的例子,我认为我可以在函数式编程中看到它的一部分有用性。谢谢! – Morwenn 2012-07-18 09:06:24
不用客气。既然你在C++中也有更高阶的函数,那么认为你也可以用这种方式来使用身份也不是疯狂的事情,但是**我认为**并不是使用C++编程的最常见的方式。 – hectorg87 2012-07-18 09:12:36