zoukankan      html  css  js  c++  java
  • 6.5.2 C# 中的函数组合

    6.5.2 C# 中的函数组合

    C# 中的函数组合是可能的。但使用非常有限,这是部分是由于在 C# 中散应用不能非常easy使用。但更重要的是,由于大多数操作是用成员来写的。而不是函数。但我们至少能够用 C# 演示相同的想法。清单 6.18 显示了 Compose 方法的实现,以及使用的演示样例。

    清单 6.18实现并使用 Compose 方法 (C#)

    static Func<A, C> Compose<A, B,C>(this Func<A, B> f, Func<B, C> g) {

      return(x) => g(f(x));    [1]

    }

    // Using function composition in C#                   |

    Func<double, double> square = (n)=> n * n;            |[2]

    Func<double, string> formatNum = (n)=> n.ToString("E");  |

    var data = new double[] { 1.1, 2.2, 3.3 };

    var sqrs =data.Select(square.Compose(formatNum)); [3]

    // Prints: "1.210000E+000";"4.840000E+000"; "1.089000E+001"

    foreach (var s in sqrs) Console.Write(s);

    函数组合被实现为 Func <T, R> 托付的扩展方法,因此,我们能够使用点表示法在函数值上调用,仅仅传递一个參数值;在 F# 中。这被写成有三个參数的函数,尽管,通常仅仅用到两个參数值。在 C# 中,我们必须将它实现作为有两个參数值的方法。显式返回 Func 托付。我们构建 lambda 函数。有一个參数值,调用将要组合的函数[1],并返回该函数作为托付。

    为了測试这种方法,我们创建了两个想要组合的函数[2],在用 Select 处理集合中的数字时。使用组合函数。我们没有显式指定 lambda 函数作为參数值。而是调用 Compose 创建组合函数值。把它传递给 Select 方法[3]。

    在最后几节中,我们已经知道,非常多实用的处理函数都是泛型,当中有些甚至有三个类型參数。

    在 F# 中,写这种函数非常easy,由于。我们不必显式写出类型,由于类型判断已经自己主动判断出类型。因此。如今要近距离了解这种机制是怎样工作的。



  • 相关阅读:
    openshift 调度命令
    k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点
    阿里云香港主机自动换IP
    python 调用阿里云服务器api创建服务器
    python 调用阿里云云解析api添加记录
    python 获取SLB信息 更换证书
    k8s 健康检查
    jenkins openshift 持续集成
    cnpm安装过程中提示optional install error: Package require os(darwin) not compatible with your platform(win32)解决方法
    Python学习笔记 chapter 2基础
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7200112.html
Copyright © 2011-2022 走看看