Rekordy
Aby modelować dane złożone z pól (np. dane z bazy danych) zamiast posługiwać się krotkami to użyjemy rekordów. Rekordy aby były funkcyjną strukturą danych są niemutowalne.
Na początku musimy zdefiniować typ rekordu:
1: 2: 3: 4: 5: 6: 7: |
|
Aby utworzyć wartość tego typu posłużymy się bardzo podobną składnią, ale do przypisania wartości pól użyjemy =
.
1:
|
|
Aby dokonywać modyfikacji stanu, będziemy tworzyli funkcje, które przyjmują rekord i zwracają nowy zaktualizowany.
1: 2: |
|
Powyżej widzimy składnię aktualizacji rekordów oraz składnię odwołania się do konkretnego pola.
Zadanie
Opracuj obiekt Random
, który będzie zawierał stan (stałe oraz seed) służący do generowania kolejnej liczby pseudolosowej. Do tego napisz funkcję newRandom
, która przyjmuje wartość początkową seeda, oraz funkcję nextRandom
o sygnaturze Random -> Random * int
. Przetestuj działanie generatora liczb pseudolosowych tworząc funkcję randomArray
, która przyjmuje początkowy seed i liczbę elementów do wygenerowania.
Pytania? Jeśli wszystko jasne, to przechodzimy do następnego modułu
| Caucasian
| Asian
| Black
Full name: Rec.SkinColor
{Name: string;
Age: int;
Skin: SkinColor;}
Full name: Rec.Person
val string : value:'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = System.String
Full name: Microsoft.FSharp.Core.string
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
Full name: Rec.jim
Full name: Rec.makeOlder
Full name: Rec.jim'