angular.identity()有没有好的用例?
Is there any good example of use cases for angular.identity()?
根据文档
A function that returns its first argument. This function is useful when writing code in the functional style.
我想知道我在哪里可以找到这样一个用例的好例子-在angular应用程序中以函数式风格编写代码。由于
AngularJS源代码中的例子:
function transformer(transformationFn, value) {
return (transformationFn || angular.identity)(value);
};
解释:
如果transformationFn
作为第一个参数,它将被调用,value
作为它自己的参数。否则,identity
函数将被调用,其值相同。
正如ng源代码中提到的:
这个函数在以函数式风格编写代码时非常有用。
这意味着在函数式编程中没有全局变量,所以你总是需要传入/注入你需要的所有东西。
我们有以下两个函数:
$scope.square = function(n) {
return n * n
};
$scope.multplybyTwo = function(n) {
return n * 2
};
函数式调用:
$scope.givemeResult = function(fn, val) {
return (fn || angular.identity)(val);
};
那么你可以像下面这样使用上面的函数:
$scope.initVal = 5;
$scope.squareResult = $scope.givemeResult($scope.square, $scope.initVal);
$scope.intoTwo = $scope.givemeResult($scope.multplybyTwo, $scope.initVal);
你可以点击下面的链接:
http://litutech.blogspot.in/2014/02/angularidentity-example.html如果我错了请纠正我,但我的理解是这个
function transformer(transformationFn, value) {
return (transformationFn || angular.identity)(value);
};
可以被"反重构"为
function transformer(transformationFn, value) {
if (transformationFn) {
return transformationFn(value);
} else {
return angular.identity(value);
}
};
在功能上等同于这个不含identity
的版本:
function transformer(transformationFn, value) {
if (transformationFn) {
return transformationFn(value);
} else {
return value;
}
};
所以我猜用例是当你想要应用一个特定的转换到一个值时,当你提供的东西可能存在,也可能不存在。
我想更好地解释identity
函数(正如我所理解的),虽然当我回顾我的答案时,我认为我没有真正回答你的问题。不管怎样,把我的答案留在这里,以防对你有帮助。
angular.identity
对于想要通过将对象从父对象传递给它的子对象来引用绑定到父对象的情况很有用。
下面是一个数组值的例子:恒等函数就像函数的零点。它本身没什么用,但偶尔在使用高阶函数的表达式中有用,可以将函数作为参数或将其作为结果返回。
例如,您可以将一个二维数组绑定到初始选择,然后将包含的内部数组绑定到每个子选择。在这种情况下,values函数是标识函数:它被调用到每一组子元素,传递绑定到父元素的数据,并返回这个数据数组。
在需要传递一个虚拟函数时使用:
- 一个承诺($q)
- 编译器
- 一个单元测试(spy/mock)
作为管道的数据源或泵|过滤器。
相比之下,Angular.noop
错误地正确处理了解析/拒绝承诺,因为它总是返回undefined,而Angular.identity
正确处理了解析/拒绝承诺,因为它总是返回传递给它的参数(f(x) = x
)。
在Angular的构造函数中,它的相关性如下:
JavaScript引擎只返回构造函数的实例,如果构造函数没有显式返回一个对象(即object或function类型的值)。因此,新的同一性(价值)总是一个对象。因此new identity(value) == value只有在value是对象时才返回true。这是因为当其中一个操作数是对象时,JavaScript中的相等操作符总是检查同一性。
引用
'恒等函数'?
什么是Angular。Noop用于?
R中恒等函数的实际用途是什么?
人们用恒等函数做什么?
JavaScript中identity函数的使用
恒等函数在哪里有用?为什么有用?
我如何用删除的源元素漂亮地打印XSLT结果文档?
d3 wiki:选择
AngularJS Issue #4579: orderBy filter不支持按值本身排序
angular.noop的承诺和危险
Identity Monad
函数组成与恒等函数
Cocoa绘图指南:变换-恒等变换
了解Fluent api
请解释underscore.js中_.identity(value)的用法
https://softwareengineering.stackexchange.com/questions/256090/function-only-returns-unchanged-parameter-useless
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 有没有一个javascript图形绘制库可以进行气球树布局
- 有没有更好的动手、具体的方法来学习Javascript
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有可能确定我博客的访问者的性别
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 有没有一种方法可以从URL跟踪请求的域
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有可能有多个有棱角和咕哝的跑步块
- 有没有针对带有表的JavaScript的Markdown语法解析器
- 有没有一种方法可以获得three.js的最小/lite版本
- angular.identity()有没有好的用例?