Scala Tutorial – Lär dig att skapa och använda Companion Objects

Steg

1. Hur man definierar en enkel klass för att representera ett Donut-objekt

Låt oss börja med att definiera en enkel klass som kommer att representera ett Donut-objekt med egenskaperna name och productCode. Det här exemplet är en genomgång från den tidigare handledningen Hur man skapar klasser och objekt i Scala.

Som i den tidigare handledningen har vi också en print()-funktion som skriver ut namn och productCode för ett givet Donut-objekt. Om du inte är bekant med att skapa funktioner i Scala kan du återvända till handledningarna om funktioner.

2. Hur man deklarerar ett kompanjonobjekt för donutklassen

Ett kompanjonobjekt definieras med hjälp av nyckelordet object och namnet på objektet ska vara identiskt med klassens namn.

Det kompletterande objektet bör dessutom definiera en apply()-metod som ansvarar för att instantiera en instans av den givna klassen.

Då Donut-klassen från steg 1 kräver egenskaperna name och productCode, tillhandahåller vi också liknande inparametrar till apply()-metoden som visas nedan.

3. Hur man skapar instanser av Donut-klassen med hjälp av companion-objektet

Med companion-objektet som definierades i steg 2 ovan kan man nu skapa instanser av Donut-klassen utan att behöva använda nyckelordet new.

NOTAT:

  • Självklart skulle man kunna argumentera för att companion-objektet egentligen inte tillför något speciellt värde annat än att man inte behöver använda nyckelordet new.
  • I nästa handledning kommer jag dock att visa dig hur apply()-metoden i companion-objektet kan användas som en fabrik för din klass.

4. Hur man anropar print-funktionen för varje donut-objekt

Nästan, låt oss anropa print()-funktionen från våra donut-objekt enligt nedan.

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

Du bör se följande utdata när du kör 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

Lämna ett svar

Din e-postadress kommer inte publiceras.