Maggio 26, 2024

Italnews

Trova tutti gli ultimi articoli e guarda programmi TV, servizi e podcast relativi all'Italia

Il linguaggio di programmazione Swift 5.9 introduce le macro e il concetto di proprietà

Il linguaggio di programmazione Swift 5.9 introduce le macro e il concetto di proprietà

Quasi sei mesi dopo il rilascio di Swift 5.8, è stata rilasciata la versione 5.9 del linguaggio di programmazione open source di Apple. La versione attuale offre macro e ha una comunicazione bidirezionale con C++. Introduce inoltre i primi approcci al concetto di proprietà, che dovrebbe essere una parte fondamentale di Swift 6.

annuncio

Le macro aggiungono contenuto predefinito a parti del codice sorgente prima della compilazione. L’implementazione di Swift si basa più sul sistema macro di Rust che su semplici macro in C o C++, dove le macro sono semplici segnaposto per unità di testo che vengono sostituite prima della compilazione.

Swift 5.9 ha due tipi di Markos: autonomo e collegato. Con loro ci sono i primi # Eccellente, Swift richiama l’esecuzione della macro durante la compilazione. Il codice seguente lo utilizza function()Macro dalla libreria standard Swift:

func myFunction(){
  print ("Das Programm befindet sich in der Funktion \(#function)")
}

Sostituisce la macro #function Secondo il nome della funzione, che il codice sopra restituisce “Il programma è nella funzione myFunction()”.

Le macro allegate aiutano, tra le altre cose, quando si lavora con i protocolli Swift, come mostra il seguente frammento di codice dalla documentazione di Swift OptionSet– Il protocollo viene popolato automaticamente con una serie di costanti:

// Makro-Variante 
@OptionSet<Int>
struct SundaeToppings {
  private enum Options: Int {
    case nuts
    case cherry
    case fudge
  }
}

// Manuelle Umsetzung ohne Makros
struct SundaeToppings: OptionSet {
  let rawValue: Int
  static let nuts = SundaeToppings(rawValue: 1 << 0)
  static let cherry = SundaeToppings(rawValue: 1 << 1)
  static let fudge = SundaeToppings(rawValue: 1 << 2)
}

Il compilatore Swift non sostituisce semplicemente il testo della macro, come fa con C o C++, ma richiama l’implementazione in questione.

(immagine: Documentazione veloce)

Un’altra importante innovazione è l’interoperabilità bidirezionale con C++, che consente di utilizzare funzioni esterne direttamente da Swift, come mostrato in un esempio tratto da un blog Swift che utilizza una funzione C++

// Clang module 'PromptResponder'
#pragma once
#include <vector>

std::vector<std::string> generatePromptResponse(std::string prompt);

Dalle chiamate SWIFT:

import PromptResponder

let codeLines = 
  generatePromptResponse("Write Swift code that prints hello world")
  .map(String.init)
  .filter { !$0.isEmpty }

for line in codeLines {
  print(line)
}

Swift 5.9 introduce anche i primi accenni al concetto di proprietà delle variabili, che non è così rigido e basilare come in Rust, ma dovrebbe aiutare a migliorare la gestione della memoria. In questo modo si elimina tra l’altro la necessità di calcolare i singoli riferimenti ai valori. Nuovo operatore consume Dichiara che una variabile è scaduta, in modo che la vecchia variabile perde la sua validità quando viene impostata. Secondo le istruzioni

let b = consume a

Include b Il valore del aE tentativi successivi a L’accesso causa un errore. L’operatore può essere utilizzato anche per creare una variabile

_ = consume a

Rilascia esplicitamente senza assegnare il valore a un altro. I parametri possono ora Piace borrowing O consuming È annunciato. Inoltre, Swift 5.9 Strutture ed enumerazioni non copiabili UN.

Altre innovazioni in Swift 5.9 come l’impacchettamento dei parametri per passare un numero flessibile di parametri e assegnazioni di variabili dirette nelle istruzioni if ​​e switch Può essere trovato sul blog di Swift.

Non ci sono informazioni nel post del blog sulla tabella di marcia aggiuntiva per la prossima major release, che ha già messo in ombra Swift 5.8.


(Romano)

Alla home page