En aquest mòdul, explorarem dues estructures de dades fonamentals en F#: les tuples i els registres. Aquestes estructures són essencials per a la programació funcional i ens permeten agrupar dades de manera eficient i clara.

Tuples

Què és una Tuple?

Una tuple és una estructura de dades que agrupa un nombre fix d'elements de diferents tipus. Les tuples són immutables, el que significa que no es poden modificar després de la seva creació.

Creació de Tuples

Per crear una tuple en F#, simplement llistem els elements entre parèntesis separats per comes.

let myTuple = (1, "Hello", true)

Accés als Elements

Podem accedir als elements d'una tuple utilitzant la descomposició de tuples.

let (a, b, c) = myTuple
printfn "a: %d, b: %s, c: %b" a b c

Exemple Pràctic

let personInfo = ("John", "Doe", 30)

let (firstName, lastName, age) = personInfo

printfn "First Name: %s" firstName
printfn "Last Name: %s" lastName
printfn "Age: %d" age

Exercici Pràctic

Exercici 1: Crea una tuple que contingui el nom d'un llibre, l'autor i l'any de publicació. Després, descompon la tuple i imprimeix cada element.

// Solució
let bookInfo = ("The Catcher in the Rye", "J.D. Salinger", 1951)

let (title, author, year) = bookInfo

printfn "Title: %s" title
printfn "Author: %s" author
printfn "Year: %d" year

Registres

Què és un Registre?

Un registre és una estructura de dades que agrupa un conjunt de camps amb noms. Els registres són immutables per defecte, però es poden crear registres mutables si cal.

Definició de Registres

Per definir un registre, utilitzem la paraula clau type seguida del nom del registre i els camps.

type Person = {
    FirstName: string
    LastName: string
    Age: int
}

Creació d'Instàncies de Registres

Podem crear una instància d'un registre utilitzant la sintaxi següent:

let person = { FirstName = "John"; LastName = "Doe"; Age = 30 }

Accés als Camps

Podem accedir als camps d'un registre utilitzant la notació de punt.

printfn "First Name: %s" person.FirstName
printfn "Last Name: %s" person.LastName
printfn "Age: %d" person.Age

Exemple Pràctic

type Book = {
    Title: string
    Author: string
    Year: int
}

let book = { Title = "The Catcher in the Rye"; Author = "J.D. Salinger"; Year = 1951 }

printfn "Title: %s" book.Title
printfn "Author: %s" book.Author
printfn "Year: %d" book.Year

Exercici Pràctic

Exercici 2: Defineix un registre Car amb els camps Make, Model i Year. Crea una instància d'aquest registre i imprimeix els seus camps.

// Solució
type Car = {
    Make: string
    Model: string
    Year: int
}

let car = { Make = "Toyota"; Model = "Corolla"; Year = 2020 }

printfn "Make: %s" car.Make
printfn "Model: %s" car.Model
printfn "Year: %d" car.Year

Resum

En aquesta secció, hem après sobre les tuples i els registres en F#. Les tuples ens permeten agrupar un nombre fix d'elements de diferents tipus, mentre que els registres ens permeten agrupar camps amb noms. Ambdós són immutables per defecte, el que els fa ideals per a la programació funcional.

En el següent mòdul, explorarem les unions discriminades, una altra estructura de dades poderosa en F#.

© Copyright 2024. Tots els drets reservats