2016-07-10 4 views
0

F#で変数を使用して値を返すラベルを作成したいとします。残念ながら、F#はこのラベルを一定の値に設定します。変更可能な値が変更された場合、ラベルの値はそのまま残ります。それは少し矛盾していますか?可変( "x")に依存するラベル( "a")を得る方法はありますか?あなたはaは、そのX + 2
直接翻訳を返す機能になりたい、あなた自身のコメントからF#の可変変数にラベルをリンクする方法はありますか?

let mutable x = 0; 

let a = x + 2; // I want not to set a to a constant value 
let b two = x + two; 

x <- 1; 

let c = b 2; 

let isConsistent = a = c; 


val mutable x : int = 1 
val a : int = 2 
val b : two:int -> int 
val c : int = 3 
val isConsistent : bool = false 
+2

あなたはなぜあなたは '可変使用している、F#のを学習している場合'。手続き型やオブジェクト指向の言語のアイデアを私の立場から持ち越して、関数型プログラミングを学習するのは悪い考えです。 –

+0

私は自分で突然変異を起こしたくありません。私は 'a'をx + 2を返す関数にしたいとします。 – checkThisOut

+2

@checkThisOutこれを関数にします。 – Sehnsucht

答えて

5

です:

let mutable x = 0 

let a() = x + 2 
let b two = x + two 

x <- 1 

let c = b 2 

let isConsistent = a() = c // don't forget to call the function 'a' 

(* 
val mutable x : int = 1 
val a : unit -> int 
val b : two:int -> int 
val c : int = 3 
val isConsistent : bool = true 
*) 
関連する問題