MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Stabilirea alias-urilor și pattern-ul as

Operatorul as permite stabilirea unui alias pentru valoarea unui șablon sau pentru întregul șablon. Un exemplu simplu:

def print_person(person):
   match person:
       case "Tom" | "Tomas" | "Tommy" as name:
           print(f"Nume: {name}")
       case _:
           print("Nedefinit")


print_person("Tom")     # Nume: Tom
print_person("Tomas")   # Nume: Tomas
print_person("Bob")     # Nedefinit

Aici, primul șablon corespunde celor trei șiruri de caractere: "Tom" | "Tomas" | "Tommy". După setul de valori urmează operatorul as, după care este specificat alias-ul. Indiferent de ce șir este transmis, acesta va ajunge în variabila name.

Alias-ul poate fi aplicat atât pentru o valoare individuală a șablonului, cât și pentru întregul șablon:

def print_person(person):
   match person:
       case ("Tom" | "Tomas" as name, 37 | 38 as age):   # alias-uri pentru valori individuale
           print(f"Tom| Nume: {name}  Vârstă: {age}")
       case ("Bob" | "Robert", 41 | 42) as bob:          # alias pentru întregul șablon
           print(f"Bob| Nume: {bob[0]}  Vârstă: {bob[1]}")
       case _:
           print("Nedefinit")


print_person(("Tomas", 38))     # Tom| Nume: Tomas  Vârstă: 38
print_person(("Robert", 41))    # Bob| Nume: Robert  Vârstă: 41

Alias-urile sunt de obicei mai utile în cazul unor structuri de date mai complexe. De exemplu:

class Person:
   __match_args__ = ("name", "age")
   def __init__(self, name, age):
       self.name = name
       self.age = age


def print_family(family):
   match family:
       case (Person() as husband, Person() as wife):
           print(f"Soț. Nume: {husband.name}  Vârstă: {husband.age}")
           print(f"Soție. Nume: {wife.name}  Vârstă: {wife.age}")
       case _:
           print("Nedefinit")


print_family((Person("Tom", 37), Person("Alice", 33)))
# Soț. Nume: Tom  Vârstă: 37
# Soție. Nume: Alice  Vârstă: 33

print_family((Person("Sam", 28), Person("Kate", 25)))
# Soț. Nume: Sam  Vârstă: 28
# Soție. Nume: Kate  Vârstă: 25

Aici, funcția print_family primește un tuplu care ar trebui să fie compus din două elemente de tip Person. În primul șablon, se definește pentru primul element alias-ul husband, iar pentru al doilea alias-ul wife. Apoi, folosind aceste alias-uri, putem accesa atributele acestora.

← Lecția anterioară Lecția următoare →