angular.identity()有没有好的用例?

Is there any good example of use cases for angular.identity()?

本文关键字:有没有 identity angular      更新时间:2023-09-26

根据文档

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
相关文章: