Scala Tutorial – Lær at oprette og bruge Companion Objects

Steps

1. Sådan defineres en simpel klasse til at repræsentere et Donut-objekt

Lad os starte med at definere en simpel klasse, som vil repræsentere et Donut-objekt med egenskaberne name og productCode. Dette eksempel er en gennemgang fra den tidligere tutorial om hvordan man opretter klasser og objekter i Scala.

Som i den tidligere tutorial skal vi også have en print()-funktion, som vil udskrive navnet og productCode for et givet donut-objekt. Hvis du ikke er bekendt med at oprette funktioner i Scala, kan du henvise tilbage til Tutorials om funktioner.

2. Hvordan man erklærer et ledsageobjekt for donut-klassen

Et ledsageobjekt defineres ved hjælp af nøgleordet object, og objektets navn skal være identisk med klassens navn.

Det ledsagende objekt skal desuden definere en apply()-metode, som er ansvarlig for at instantiere en instans af den givne klasse.

Da Donut-klassen fra trin 1 kræver egenskaberne name og productCode, giver vi også lignende inputparametre til apply()-metoden, som vist nedenfor.

3. Sådan oprettes instanser af Donut-klassen ved hjælp af companion-objektet

Med companion-objektet, der blev defineret i trin 2 ovenfor, kan du nu oprette instanser af Donut-klassen uden at skulle bruge nøgleordet new.

BEMÆRK:

  • Sikkert kan man argumentere for, at companion-objektet ikke rigtig tilføjer nogen særlig værdi ud over, at du ikke behøver at bruge nøgleordet new.
  • I den næste tutorial vil jeg imidlertid vise dig, hvordan apply()-metoden i companion-objektet kan bruges som en fabrik for din klasse.

4. Sådan kalder du print-funktionen for hvert af donut-objekterne

Næst skal vi kalde print()-funktionen fra vores donut-objekter som vist nedenfor.

println("\nStep 4: How to call function on each Donut object")glazedDonut.printvanillaDonut.print

Du bør se følgende output, når du kører din Scala-applikation i IntelliJ:

Step 4: How to call the print function for each of the Donut objectDonut name = Glazed Donut, productCode = 1111Donut name = Vanilla Donut, productCode = 2222

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.