Fsharp-variables

提供:Dev Guides
移動先:案内検索

F#-変数

変数は、プログラムが操作できるストレージ領域に付けられた名前です。 各変数には特定のタイプがあり、変数のメモリのサイズとレイアウトを決定します。そのメモリ内に保存できる値の範囲。変数に適用できる一連の操作。

F#の変数宣言

*let* キーワードは変数宣言に使用されます-

例えば、

let x = 10

変数xを宣言し、値10を割り当てます。

また、変数に式を割り当てることができます-

let x = 10
let y = 20
let z = x + y

次の例は、概念を示しています-

let x = 10
let y = 20
let z = x + y

printfn "x: %i" x
printfn "y: %i" y
printfn "z: %i" z

あなたがプログラムをコンパイルして実行すると、次の出力が得られます-

x: 10
y: 20
z: 30

F#の変数は*不変*です。つまり、変数が値にバインドされると、変更することはできません。 実際には、静的な読み取り専用プロパティとしてコンパイルされます。

次の例はこれを示しています。

let x = 10
let y = 20
let z = x + y

printfn "x: %i" x
printfn "y: %i" y
printfn "z: %i" z

let x = 15
let y = 20
let z = x + y

printfn "x: %i" x
printfn "y: %i" y
printfn "z: %i" z

あなたがプログラムをコンパイルして実行すると、次のエラーメッセージが表示されます-

Duplicate definition of value 'x'
Duplicate definition of value 'Y'
Duplicate definition of value 'Z'

型宣言を使用した変数定義

変数の定義は、変数のストレージを作成する場所と量をコンパイラに指示します。 変数定義では、データ型を指定でき、次の例に示すように、その型の1つ以上の変数のリストが含まれます。

let x:int32 = 10
let y:int32 = 20
let z:int32 = x + y

printfn "x: %d" x
printfn "y: %d" y
printfn "z: %d" z

let p:float = 15.99
let q:float = 20.78
let r:float = p + q

printfn "p: %g" p
printfn "q: %g" q
printfn "r: %g" r

あなたがプログラムをコンパイルして実行すると、次のエラーメッセージが表示されます-

x: 10
y: 20
z: 30
p: 15.99
q: 20.78
r: 36.77

可変変数

時々、変数に保存されている値を変更する必要があります。 宣言されて割り当てられた変数の値がプログラムの後半で変更される可能性があることを指定するために、F#には mutable キーワードが用意されています。 値を変更するこのキーワードを使用して、可変変数を宣言および割り当てることができます。

*mutable* キーワードを使用すると、可変変数で値を宣言して割り当てることができます。
*let* キーワードを使用して、可変変数に初期値を割り当てることができます。 ただし、新しい後続の値をそれに割り当てるには、*←*演算子を使用する必要があります。

例えば、

let mutable x = 10
x ← 15

次の例は、概念をクリアします-

let mutable x = 10
let y = 20
let mutable z = x + y

printfn "Original Values:"
printfn "x: %i" x
printfn "y: %i" y
printfn "z: %i" z

printfn "Let us change the value of x"
printfn "Value of z will change too."

x <- 15
z <- x + y

printfn "New Values:"
printfn "x: %i" x
printfn "y: %i" y
printfn "z: %i" z

あなたがプログラムをコンパイルして実行すると、次の出力が得られます-

Original Values:
x: 10
y: 20
z: 30
Let us change the value of x
Value of z will change too.
New Values:
x: 15
y: 20
z: 35