[英]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)
但請注意,這不會改變x
和y
。 相反,它會創建新的變量x
和y
,它們會影響先前的綁定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.