[英]f#: Strange syntax in example using ".. in let .."
我正在閱讀有關RosettaCode的示例,但並不完全知道以下行在做什么。
let min,subheap = findMin heap' in let rtn = root topnode
似乎findMin heap'
是自包含的執行單元。 我不知道它與“in”運算符的關系,也不了解“in”運算符中 let 語句的使用。
這是整個方法
let rec private findMin heap =
match heap with | [] -> raise Empty_Heap //guarded so should never happen
| [node] -> root node,[]
| topnode::heap' ->
let min,subheap = findMin heap' in let rtn = root topnode
match subheap with
| [] -> if rtn.k > min.k then min,[] else rtn,[]
| minnode::heap'' ->
let rmn = root minnode
if rtn.k <= rmn.k then rtn,heap
else rmn,minnode::topnode::heap''
[編輯] 即使在 sepp2k 解釋了它之后,“let”的文檔也沒有解釋這一點。 您必須查看“詳細語法(F#)”文檔。
let
表達式的詳細語法是let <ident> = <exp> in <exp>
。 因此,要定義和添加兩個變量,您可以let x = 23 in let y = 42 in x + y
編寫let x = 23 in let y = 42 in x + y
。 F# 的輕量級語法允許您在行尾省略in
,因此此示例將改寫為:
let x = 23
let y = 42
x + y
您的代碼通過保留第一個in
以便能夠在一行中包含兩個let
,從而混合了冗長和簡潔的語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.