Hack lang - Documentazione in Italiano

Questa è la documentazione di Hack-lang, in Italiano. Tutto il testo è tradotto dalla documentazione ufficiale.

Che cosa è Hack?(Edit)

Hack è un linguaggio di programmazione per HHVM. Hack concilia la velocità di sviluppo di un linguaggio tipizzato dinamicamente con la disciplina prevista dalla tipizzazione statica, all'aggiunta di molte funzioni che si trovano comunemente in altri linguaggi di programmazione moderni.

Hack offre un tipo di controllo istantaneo incrementale, controllando i file man mano che li si modifica. Funziona in genere in meno di 200 millisecondi, rendendo più facile l'integrazione nel workflow di sviluppo senza introdurre un ritardo notevole.

Le seguenti sono qualcuna delle importanti caratteristiche di Hack. Per maggiori informazioni, leggi la documentazione completa (inglese), oppure impara tramite il tutorial interattivo ufficiale.

  • Le Type Annotations consentono al codice di essere esplicitamente tipizzato su paramentri, variabili di classi e valori di ritorno:
     
    <?hh
    class MyClass {
      const int MyConst = 0;
      private string $x = '';
      public function increment(int $x): int {
        $y = $x + 1;
        return $y;
      }
    }
    
  • Il Tipo Generico permette alle classi e metodi di essere parametrizzati (Es.: un tipo associato quando una classe viene istanziata o viene chiamato un metodo) nella stessa ottica dei linguaggi staticamente tipizzati come C# and Java:
    <?hh
    class Box<T> {
      protected T $data;
    
      public function __construct(T $data) {
        $this->data = $data;
      }
    
      public function getData(): T {
        return $this->data;
      }
    }
    
  • I Nullable Types sono supportati da Hack attraverso l'uso dell'operatore "?". Questo introduce un modo più sicuro di trattare con i null ed è molto utile per i tipi primitivi che in genere non consentono nulli i loro valori, come bool e int (usando ?Bool e ?Int, rispettivamente). L'operatore può essere utilizzato su qualsiasi tipo o classe.
  • I Collections forniscono la prima classe, tipi parametrizzati built-in come Vector (lista ordinata, lista index-based), Map (dizionario ordinato), Set (una lista di valori unici) e Pair (una collezione index-based di esattamente due elementi).
  • I Lambda permettono succintamente la definizione delle funzioni di prima classe:
    <?hh
    function foo(): (function(string): string) {
      $x = 'bar';
      return $y ==> $x . $y;
    }
    function test(): void {
      $fn = foo();
      echo $fn('baz'); // barbaz
    }
    

Altre caratteristiche significanti includono XHP, Shapes, Type Aliasing, supporto Async, retro-compatibilità con codice PHP e molto altro.

La community è lieta di far notare che esistono tool di conversione Hack open source che puoi utilizzare da subito nei tuoi progetti esistenti.