F# 一个以上参数的功能
示例
在F#中,所有函数仅使用一个参数。这似乎很奇怪,因为在函数声明中声明多个参数非常容易:
let add x y = x + y
但是,如果在F#交互式解释器中键入该函数声明,则会看到其类型签名为:
val add : x:int -> y:int -> int
没有参数名称,该签名为int->int->int。该->操作是右结合的,这意味着该签名等同于int->(int->int)。换句话说,add是一个函数,它有一个int参数,并返回一个函数,它有一个int和回报int。试试看:
let addTwo = add 2 // val addTwo : (int -> int) let five = addTwo 3 //值五:整数=5
但是,您还可以像add更“常规”的方式调用函数一样,直接向它传递两个参数,它将像您期望的那样工作:
let three = add 1 2 //值三:整数=3
这适用于具有所需参数的函数:
let addFiveNumbers a b c d e = a + b + c + d + e // val addFiveNumbers : a:int -> b:int -> c:int -> d:int -> e:int -> int let addFourNumbers = addFiveNumbers 0 // val addFourNumbers : (int -> int -> int -> int -> int) let addThreeNumbers = addFourNumbers 0 // val addThreeNumbers : (int -> int -> int -> int) let addTwoNumbers = addThreeNumbers 0 // val addTwoNumbers : (int -> int -> int) let six = addThreeNumbers 1 2 3 //这将计算0+0+1+2+3 //值六:整数=6
这种将多参数函数视为具有一个参数并返回新函数的函数的方法(可能依次具有一个参数并返回新函数,直到到达具有最终参数并最终返回结果的最终函数)为了纪念以开发该概念而闻名的数学家HaskellCurry,他将其称为currying。(它是别人发明的,但是咖喱理应得到大多数赞誉。)
F#中使用了这个概念,您需要熟悉一下。
热门推荐
10 分别发的祝福语简短
11 大外甥高考祝福语简短
12 小学毕业校长简短祝福语
13 搞工程发财祝福语简短
14 冬季祝福语男生文案简短
15 同事生子问候祝福语简短
16 退休文案寄语简短祝福语
17 送给自己的祝福语简短
18 简短祝福语毛笔字