2015-10-20 82 views
0

如何在if-else塊中創建局部變量? (如果這是OCaml中有效)OCaml- if-else塊中的局部變量?

下面是什麼我想OCaml中做C例程代碼:

if (1 == 1) { 
     return 3; 
    } else { 
     int j = 5; 
     return j; 
    } 
+0

看它是這樣的:一個IF-THEN-ELSE是一個表達式,對其進行評估並返回一個值。不是這樣做,定義那個建築。尤其是你不能定義要在外部使用的變量。 –

回答

3

你必須認識到,在OCaml的變量是不可變的,即宣佈時,他們被綁定到一個值,該值永遠不會改變。

如果您對「變量」的含義感到滿意,那麼您可以在表達式可以出現的任何位置聲明局部變量。形式

let v = expr1 in expr2 

的表達式聲明一個變量,v這是本地expr2。它的值(不能改變)由expr1給出。

您可以在任何地方使用這種表達式,因此您可以在if表達式中使用它。

A的C代碼相當忠實的翻譯是這樣的:

if 1 = 1 then 
    3 
else 
    let j = 5 in 
    j 
1

這是合法的,但沒什麼用。

let i=1;; 
if i = 1 then 
    3 
else ( 
    let j=5 in 
    j 
) ;;   

- :INT = 3