F#学习笔记(三) 函数
接着要讲的是F#中的函数,上面说到过标识符可以绑定任何的表达式,同样,标识符也可以绑定到函数,F#中的函数通过关键字fun来表示,
let addTenToNumber = (fun x -> x + 10);;
也是通过let关键字来绑定到标识符,响应的结果是
val addTenToNumber : int -> int
其中的int->int表示这个函数标识符带有一个int类型的参数,返回类型也为int,我们可以通过
标识符名+参数 的形式来直接调用定义的函数addTenToNumber 32;;
下面说一下怎么样定义多个参数的函数let addTwoNumbers = (fun x -> (fun y -> x + y));;在这个函数中,有x和y两个参数,其实这里是包含了2个function,第一个返回的是y,再返回x给标识符addTwoNumbers,不过这样当参数很多时,表达式会显得很长,很难读懂,所以F#提供了直接绑定多参数的方法let addTwoNumbers x y = x + y;;响应的结果和上面的一样val addTwoNumbers : int -> int -> int,这里的int->int->int表示的是第一个参数是int类型,返回一个int类型作为第二个参数,再返回给标识符的是最终的int类型。
这里要注意,F#中的函数和C#中的函数是不一样的,即addTwoNumbers x y和addTwoNumbers (x,y)是两个概念,addTwoNumbers(x,y)在F#中表示的是一个元组的概念。同样的,调用函数的返回值也可以绑定到标识符。
接下来要提到的是函数的局部应用方式,当我们只需要应用函数的一部分来生成新的函数的时候,这是十分方便的,let addTenToNumber = addNumbers 10;;这里我们可以看到响应的结果是val addTenToNumber : (int -> int),即只需要传一个参数给addNumbers函数,addNumbers会算出addTenToNumber返回一个int类型的值,相当于对addNumbers函数的二次开发,这个功能还是相当好的。