函数式编程

原创 2007年09月25日 18:20:00

这算是找资料时候的副产品吧。觉得很有意思,先记下来,以后可以继续研究。

函数式编程的几个特点:

函数并不总是需要名称。 函数可以像其他值一样分配给变量。 函数表达式可以先编写,留待以后应用。 函数可以作为参数传递给其他函数。

==========================================================

9月25日的心得:

函数式编程,在C#中主要通过代理函数(delegate function)来实现。

第一点,可以看成是一个匿名函数。匿名函数不需要名称。

delegate string delegateOutput (string val);

static void Main(string[] args)
...{
   
string mid = "Output: ";
   delegateOutput op 
= delegate (string param)
   
...{
       param 
+= mid + param;
       
return param;
   }
;

   Console.WriteLine (op(
"Test"));
   Console.ReadLine();
}

第二点,代理函数可以看成是一个变量,在必要的时候,可以当做一个变量来使用。比如,使用多重代理(Multicast Delegates)的时候。当然,事件的运用也是体现了这点。

delegate void MathOp (double value);

static void Main (string[] args)
...{
   MathOp op1 
= new MathOp(MultiplyByTwo);
   MathOp op2 
= new MathOp(Square);
   MathOp op 
= op1 + op2;
   op (
2.0);
   Console.ReadLine();
}


public static void MultiplyByTwo (double value)
...{
   
double result = value * 2;
   Console.WriteLine (
"MultiplyByTwo: " + result.ToString());
}


public static void Square (double value)
...{
   
double result = value * value;
   Console.WriteLine (
"Square: " + result.ToString());
}

第三点,函数表达式可以先编写,留待以后应用。这点似乎没有什么可提的……

第四点,函数可以作为参数传递给其他函数。使用代理函数的时候,函数就是一个变量。这个函数变量可以作为参数传递给其他函数,并在其他函数中运用。

delegate void delegateTest(double val);

static void Main(string[] args)
...{
    delegateTest t 
= new delegateTest(Test);
    TestDelegateVal(t);
    Console.ReadLine();
}


private static void Test(double val)
...{
    Console.WriteLine(
"Test: " + val.ToString());
}


private static void TestDelegateVal(delegateTest d)
...{
    Console.WriteLine(
"Starting...");
    d(
2.0);
}

Stream API函数式编程和Guava操作

  • 2017年11月22日 17:52
  • 289KB
  • 下载

JS 函数式编程指南 PDF

  • 2017年11月30日 11:10
  • 2.4MB
  • 下载

java 8 函数式编程

接口增强 函数式编程之lambda表达式 方法引用与内建函数式接口 接口增强 java 8 以前接口只能包含抽象类和全局变量和静态变量,我们都知道实现接口的子类必须实现接口的所有抽象方法,这里...
  • t_nfs
  • t_nfs
  • 2017年12月11日 12:59
  • 10

java8函数式编程

  • 2017年11月01日 12:37
  • 11.72MB
  • 下载

java guava 函数式编程

Guava:google的工程师利用传说中的“20%时间”开发的集合库,它是对jdk提供的扩展,提供了很多实用的类来简化代码。 开源地址:https://github.com/google/gu...

Scala 函数式编程

  • 2017年10月30日 15:51
  • 67.4MB
  • 下载

Java 8函数式编程 范例

  • 2017年10月12日 17:56
  • 383KB
  • 下载

Java8新特性(一)------函数式编程

Ø  基本概念   理解FunctionalInterface(函数式接口,以下简称FI)是学习Java8 Lambda表达式的关键所在。FI的定义其实很简单:任何接口,如果只包含唯一 一个抽象方法,...

Java8函数式编程PDF

  • 2017年08月27日 13:54
  • 11.66MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数式编程
举报原因:
原因补充:

(最多只允许输入30个字)