使用 let 繫結定義函式
可以使用 let
為值指定值:
# let a = 1;;
val a : int = 1
你可以使用類似的語法來定義函式。只需為引數提供其他引數。
# let add arg1 arg2 = arg1 + arg2;;
val add : int -> int -> int = <fun>
我們可以這樣稱呼它:
# add 1 2;;
- : int = 3
我們可以像這樣直接傳遞值,或者我們可以傳遞繫結到名稱的值:
# add a 2;;
- : int = 3
在我們定義某些內容之後,直譯器為我們提供的行是具有其型別簽名的物件的值。當我們給它一個與 a
繫結的簡單值時,它回來了:
val a : int = 1
這意味著 a
是一個 int
,它的值是 1
。
我們函式的型別簽名有點複雜:
val add : int -> int -> int = <fun>
add
的型別簽名看起來像一堆整數和箭頭。這是因為帶有兩個引數的函式實際上是一個函式,它只接受一個引數,但返回另一個接受下一個引數的函式。你可以這樣讀它:
val add : int -> (int -> int) = <fun>
當我們想要動態建立不同型別的函式時,這非常有用。例如,一個向所有內容新增 5 的函式:
# let add_five = add 5;;
val add_five : int -> int = <fun>
# add_five 5;;
- : int = 10
# add_five 10;;
- : int = 15