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";}