F # - Değişken Veriler

F # değişkenler immutable,Bu, bir değişken bir değere bağlandığında değiştirilemeyeceği anlamına gelir. Aslında statik salt okunur özellikler olarak derlenirler.

Aşağıdaki örnek bunu göstermektedir.

Misal

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

Programı derleyip çalıştırdığınızda, aşağıdaki hata mesajını gösterir -

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

Değişken Değişkenler

Bazen bir değişkende depolanan değerleri değiştirmeniz gerekir. Bir programın sonraki bölümlerinde bildirilen ve atanan bir değişkenin değerinde bir değişiklik olabileceğini belirtmek için F #,mutableanahtar kelime. Değerlerini değiştireceğiniz bu anahtar kelimeyi kullanarak değişken değişkenleri tanımlayabilir ve atayabilirsiniz.

mutable anahtar sözcük, değiştirilebilir bir değişkendeki değerleri bildirmenize ve atamanıza izin verir.

Değiştirilebilir bir değişkene bazı başlangıç ​​değerleri atayabilirsiniz. letanahtar kelime. Ancak, ona yeni bir sonraki değer atamak için,<- Şebeke.

Örneğin,

let mutable x = 10
x <- 15

Aşağıdaki örnek kavramı açıklayacaktır -

Misal

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

Programı derleyip çalıştırdığınızda, aşağıdaki çıktıyı verir -

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

Değişken Verilerin Kullanımları

Değişken veriler genellikle gereklidir ve veri işlemede, özellikle kayıt veri yapısıyla birlikte kullanılır. Aşağıdaki örnek bunu göstermektedir -

open System

type studentData =
   { ID : int;
      mutable IsRegistered : bool;
      mutable RegisteredText : string; }

let getStudent id =
   { ID = id;
      IsRegistered = false;
      RegisteredText = null; }

let registerStudents (students : studentData list) =
   students |> List.iter(fun st ->
      st.IsRegistered <- true
      st.RegisteredText <- sprintf "Registered %s" (DateTime.Now.ToString("hh:mm:ss"))

      Threading.Thread.Sleep(1000) (* Putting thread to sleep for 1 second to simulate processing overhead. *))

let printData (students : studentData list) =
   students |> List.iter (fun x -> printfn "%A" x)

let main() =
   let students = List.init 3 getStudent

   printfn "Before Process:"
   printData students

   printfn "After process:"
   registerStudents students
   printData students

   Console.ReadKey(true) |> ignore

main()

Programı derleyip çalıştırdığınızda, aşağıdaki çıktıyı verir -

Before Process:
{ID = 0;
IsRegistered = false;
RegisteredText = null;}
{ID = 1;
IsRegistered = false;
RegisteredText = null;}
{ID = 2;
IsRegistered = false;
RegisteredText = null;}
After process:
{ID = 0;
IsRegistered = true;
RegisteredText = "Registered 05:39:15";}
{ID = 1;
IsRegistered = true;
RegisteredText = "Registered 05:39:16";}
{ID = 2;
IsRegistered = true;
RegisteredText = "Registered 05:39:17";}