Aggiunta di esempi di codice

Puoi aggiungere snippet di codice inline o blocchi di codice. I blocchi di codice supportano opzioni meta per l’evidenziazione della sintassi, i titoli, l’evidenziazione delle righe, le icone e altro ancora.

Codice inline

Per indicare una parola o una frase come codice, racchiudila tra backtick (`).
Per indicare una `parola` o una `frase` come codice, racchiudila tra backtick (`).

Blocchi di codice

Usa i blocchi di codice recintati racchiudendo il codice tra tre backtick. I blocchi di codice sono copiabili e, se hai abilitato l’Assistente, gli utenti possono chiedere all’IA di spiegare il codice. Specifica il linguaggio di programmazione per l’evidenziazione della sintassi e per abilitare le opzioni meta. Aggiungi eventuali opzioni meta, come un titolo o un’icona, subito dopo il linguaggio.
HelloWorld.java
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```java HelloWorld.java lines icon="java"
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

Opzioni dei blocchi di codice

Puoi aggiungere opzioni meta ai blocchi di codice per personalizzarne l’aspetto.
Devi specificare un linguaggio di programmazione per un blocco di codice prima di aggiungere qualsiasi altra opzione meta.

Sintassi delle opzioni

  • Opzioni stringa e booleane: Racchiudi tra "", '' o senza virgolette.
  • Opzioni come espressioni: Racchiudi tra {}, "" o ''.

Evidenziazione della sintassi

Abilita l’evidenziazione della sintassi specificando il linguaggio di programmazione dopo i backtick di apertura di un blocco di codice. Usiamo Shiki per l’evidenziazione della sintassi e supportiamo tutti i linguaggi disponibili. Consulta l’elenco completo dei linguaggi nella documentazione di Shiki.
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```java
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

Titolo

Aggiungi un titolo per indicare il tuo esempio di codice. Usa title="Your title" oppure una stringa su una singola riga.
Code Block Example
const hello = "world";
```javascript Code Block Example
const hello = "world";
```

Icona

Aggiungi un’icona al blocco di codice usando la proprietà icon. Consulta Icons per tutte le opzioni disponibili.
const hello = "world";
```javascript icon="square-js"
const hello = "world";
```

Evidenziazione delle righe

Evidenzia righe specifiche nei blocchi di codice usando highlight con i numeri di riga o gli intervalli che vuoi mettere in evidenza.
Line Highlighting Example
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```javascript Line Highlighting Example highlight={1-2,5}
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```

Evidenziazione delle righe

Metti in evidenza righe specifiche nei blocchi di codice usando focus con numeri di riga o intervalli.
Line Focus Example
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```javascript Line Focus Example focus={2,4-5}
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```

Mostra i numeri di riga

Visualizza i numeri di riga sul lato sinistro del blocco di codice usando lines.
Esempio di numeri di riga
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```javascript Esempio di numeri di riga lines
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```

Espandibile

Consenti agli utenti di espandere e comprimere i blocchi di codice lunghi usando expandable.
Expandable Example
from datetime import datetime, timedelta
from typing import Dict, List, Optional
from dataclasses import dataclass

@dataclass
class Book:
    title: str
    author: str
    isbn: str
    checked_out: bool = False
    due_date: Optional[datetime] = None

class Library:
    def __init__(self):
        self.books: Dict[str, Book] = {}
        self.checkouts: Dict[str, List[str]] = {}  # patron -> lista di ISBN

    def add_book(self, book: Book) -> None:
        if book.isbn in self.books:
            raise ValueError(f"Book with ISBN {book.isbn} already exists")
        self.books[book.isbn] = book

    def checkout_book(self, isbn: str, patron: str, days: int = 14) -> None:
        if patron not in self.checkouts:
            self.checkouts[patron] = []

        book = self.books.get(isbn)
        if not book:
            raise ValueError("Book not found")

        if book.checked_out:
            raise ValueError("Book is already checked out")

        if len(self.checkouts[patron]) >= 3:
            raise ValueError("Patron has reached checkout limit")

        book.checked_out = True
        book.due_date = datetime.now() + timedelta(days=days)
        self.checkouts[patron].append(isbn)

    def return_book(self, isbn: str) -> float:
        book = self.books.get(isbn)
        if not book or not book.checked_out:
            raise ValueError("Book not found or not checked out")

        late_fee = 0.0
        if datetime.now() > book.due_date:
            days_late = (datetime.now() - book.due_date).days
            late_fee = days_late * 0.50

        book.checked_out = False
        book.due_date = None

        # Rimuovi dalle uscite del lettore
        for patron, books in self.checkouts.items():
            if isbn in books:
                books.remove(isbn)
                break

        return late_fee

    def search(self, query: str) -> List[Book]:
        query = query.lower()
        return [
            book for book in self.books.values()
            if query in book.title.lower() or query in book.author.lower()
        ]

def main():
    library = Library()

    # Aggiungi alcuni libri
    books = [
        Book("The Hobbit", "J.R.R. Tolkien", "978-0-261-10295-4"),
        Book("1984", "George Orwell", "978-0-452-28423-4"),
    ]

    for book in books:
        library.add_book(book)

    # Esempio di prestito e restituzione
    library.checkout_book("978-0-261-10295-4", "patron123")
    late_fee = library.return_book("978-0-261-10295-4")
    print(f"Late fee: ${late_fee:.2f}")

if __name__ == "__main__":
    main()
```python Expandable Example expandable
from datetime import datetime, timedelta
from typing import Dict, List, Optional
from dataclasses import dataclass

# ...

if __name__ == "__main__":
    main()
```

Wrap

Abilita l’andata a capo per le righe lunghe usando wrap. Questo evita lo scorrimento orizzontale e rende le righe lunghe più facili da leggere.
Wrap Example
const greeting = "Hello, World! I am a long line of text that will wrap to the next line.";
function sayHello() {
  console.log(greeting);
}
sayHello();
```javascript Wrap Example wrap
const greeting = "Hello, World! I am a long line of text that will wrap to the next line.";
function sayHello() {
  console.log(greeting);
}
sayHello();
```

Diff

Mostra un diff visivo delle righe aggiunte o rimosse nei tuoi blocchi di codice. Le righe aggiunte sono evidenziate in verde e quelle rimosse in rosso. Per creare i diff, aggiungi questi commenti speciali alla fine delle righe nel blocco di codice:
  • // [!code ++]: Contrassegna una riga come aggiunta (evidenziata in verde).
  • // [!code --]: Contrassegna una riga come rimossa (evidenziata in rosso).
Per più righe consecutive, specifica il numero di righe dopo i due punti:
  • // [!code ++:3]: Contrassegna la riga corrente più le due successive come aggiunte.
  • // [!code --:5]: Contrassegna la riga corrente più le quattro successive come rimosse.
La sintassi dei commenti deve corrispondere al linguaggio di programmazione (ad esempio, // per JavaScript o # per Python).
Diff Example
const greeting = "Hello, World!"; 
function sayHello() {
  console.log("Hello, World!"); 
  console.log(greeting); 
}
sayHello();
```js Diff Example icon="code" lines
const greeting = "Hello, World!"; // [!code ++]
function sayHello() {
  console.log("Hello, World!"); // [!code --]
  console.log(greeting); // [!code ++]
}
sayHello();
```