Funzione di estensione di Kotlin (con esempi)

Sommario

In questo articolo imparerai a estendere una classe con nuove funzionalità utilizzando le funzioni di estensione.

Supponi di dover estendere una classe con nuove funzionalità. Nella maggior parte dei linguaggi di programmazione, si ricava una nuova classe o si utilizza un qualche tipo di modello di progettazione per farlo.

Tuttavia, in Koltin, puoi anche usare la funzione di estensione per estendere una classe con nuove funzionalità. Fondamentalmente, una funzione di estensione è una funzione membro di una classe definita all'esterno della classe.

Ad esempio, è necessario utilizzare un metodo per la classe String che restituisce una nuova stringa con il primo e l'ultimo carattere rimossi; questo metodo non è già disponibile in Stringclasse. È possibile utilizzare la funzione di estensione per eseguire questa operazione.

Esempio: rimuovere il primo e l'ultimo carattere della stringa

 fun String.removeFirstLastChar(): String = this.substring(1, this.length - 1) fun main(args: Array) ( val myString= "Hello Everyone" val result = myString.removeFirstLastChar() println("First character is: $result") )

Quando esegui il programma, l'output sarà:

 Il primo carattere è: ello Everyon

Qui, una funzione di estensione removeFirstLastChar ()viene aggiunta alla Stringclasse.

Il nome della classe è il tipo di destinatario ( Stringclasse nel nostro esempio). La thisparola chiave all'interno della funzione di estensione fa riferimento all'oggetto destinatario.

Se è necessario integrare Kotlin nella parte superiore del progetto Java, non è necessario modificare l'intero codice in Koltin. Usa le funzioni di estensione per aggiungere funzionalità.

Detto questo, è abbastanza facile abusare del potere delle funzioni di estensione. Ti consigliamo di controllare queste risorse per sapere quando utilizzare le estensioni e quando no:

  • I metodi di estensione e le proprietà di estensione sono errati?
  • Come abusare delle funzioni di estensione di Kotlin?

Articoli interessanti...