簡體   English   中英

如何在 OCaml 中傳遞變量的值

[英]How to pass values of variables in OCaml

在命令式語言中,我可以輕松編寫如下內容:

if(x > y) {
        int t = x;
        x = y;
        y = t;
    }

變量的值被傳遞給另一個。 但是,如果我嘗試在 Ocaml 中編寫此代碼,編譯器會將其視為比較,因此結果為 bool:

if x > y then 
          let t = x in
          let x = y in
          let y = b in 

如何將變量的值傳遞給另一個?

OCaml 不是變量,而是命名值。 如果要打亂某些值的名稱,可以編寫:

let x, y =
 if x > y then y, x
 else x, y
in

如果您想准確地反映命令式代碼,您將編寫:

# let x = ref 2;;
val x : int ref = {contents = 2}
# let y = ref 1;;
val y : int ref = {contents = 1}

# let swap_if x y = if !x > !y then let t = !x in x := !y; y := t;;
val swap_if : 'a ref -> 'a ref -> unit = <fun>

# swap_if x y;;
- : unit = ()

# !x, !y;;
- : int * int = (1, 2)

寫出你會做的功能

let (x, y) = if x > y then (y, x) else (x, y)

或者

let (x, y) = (min x y, max x y)

但請注意,這不會改變xy 相反,它會創建新的變量xy ,它們會影響先前的綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM