2016-03-25 17 views
10

Supponiamo di avere alcuni metodi di estensione per "MyClass". La mia domanda è: qual è la migliore pratica per organizzare/archiviare questi metodi? Dovrebbero essere semplicemente inseriti in un file Kotlin "MyClassExtensions"?Come organizzare i metodi di estensione di Kotlin

Ho cercato di incapsulare questi metodi all'interno di una classe, ma dopo aver importato la classe non riuscivo a capire come usare/accedere ai metodi di estensione.

Modifica: Per chiarimenti, non stavo chiedendo aiuto come chiamare un file che contiene metodi di estensione. Stavo chiedendo le migliori pratiche/approcci per archiviare/organizzare tali metodi. Vale a dire. dovrebbero essere semplicemente inseriti in file Kotlin o dovrebbero essere incapsulati in una classe. Vengo da uno sfondo Java, quindi sono abituato a immagazzinare cose nelle classi.

+2

https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions –

+0

Grazie, ho dovuto perdere per sbaglio questa parte nei documenti. – pjozsef

+0

"Migliori pratiche/approcci per archiviare/organizzare tali metodi" che rende questa domanda molto basata sull'opinione – voddan

risposta

3

Per quanto mi riguarda, è necessario inserirli in un file di utilità, come prima in Java.

Ma accennato, non è più necessario metterli in una classe. Le funzioni di primo livello sono la scelta migliore.

È possibile fare riferimento alla libreria standard di Kotlin o ad alcuni progetti open source come anko, quelli sarebbero buoni esempi.

Nel mio caso, ho messo le estensioni di una classe in un file che hanno lo stesso nome del file originale in un altro pacchetto, e utilizzare

@JvmMultifileClass 

per ridurre il numero di file di classe generati.

0

Come menzionato nel commento sotto la mia domanda, questa parte dei documenti di Kotlin lo spiega abbastanza bene. https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions

+1

Sì, ma come si chiama il file KT che contiene i metodi di estensione? – mfulton26

+0

Come si chiama un file C contenente funzioni? Ovviamente ciò dipende dalle funzioni contenute in quel file. Lo stesso vale per Kotlin. (Non c'è assolutamente alcuna regola che dice che tutte le funzioni di estensione definite per una classe devono, o dovrebbero, essere contenute in un singolo file.) – yole

+0

Ho modificato la mia domanda per chiarire cosa stavo chiedendo. – pjozsef

Problemi correlati