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.
Accés als Elements
Podem accedir als elements d'una tuple utilitzant la descomposició de tuples.
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.
Creació d'Instàncies de Registres
Podem crear una instància d'un registre utilitzant la sintaxi següent:
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#.
Curs de Programació en F#
Mòdul 1: Introducció a F#
Mòdul 2: Conceptes Bàsics
- Tipus de Dades i Variables
- Funcions i Immutabilitat
- Coincidència de Patrons
- Col·leccions: Llistes, Matrius i Seqüències
Mòdul 3: Programació Funcional
Mòdul 4: Estructures de Dades Avançades
Mòdul 5: Programació Orientada a Objectes en F#
- Classes i Objectes
- Herència i Interfícies
- Barreja de Programació Funcional i Orientada a Objectes
- Mòduls i Espais de Noms
Mòdul 6: Programació Asíncrona i Paral·lela
- Fluxos de Treball Asíncrons
- Biblioteca de Tasques Paral·leles
- MailboxProcessor i Agents
- Patrons de Concurrència
Mòdul 7: Accés i Manipulació de Dades
Mòdul 8: Proves i Depuració
- Proves Unitàries amb NUnit
- Proves Basades en Propietats amb FsCheck
- Tècniques de Depuració
- Perfilat de Rendiment