Kann ich Klammern in Scala überladen?

7

Versuchen Sie herauszufinden, wie Klammern in einer Klasse überladen werden.

Ich habe diesen Code:

%Vor%

Ich möchte auf die Werte Map auf diese Weise zugreifen können:

%Vor%

Ist das möglich?

    
Joshua 23.08.2010, 20:22
quelle

4 Antworten

19

Sie müssen eine apply Methode definieren.

%Vor%     
sepp2k 23.08.2010, 20:25
quelle
9

Der Vollständigkeit halber sollte gesagt werden, dass Ihr "apply" mehrere Werte annehmen kann, und dass "update" als das duale von "apply" funktioniert und "Klammern overloading" auf der linken Seite von Zuweisungen erlaubt

%Vor%

Der primäre Wert von all dem ist, dass es Leute davon abhält, zusätzliche Syntax für Dinge vorzuschlagen, die in früheren Sprachen der C-Familie (z. B. Array-Element-Zuweisung und Fetch) speziell behandelt werden mussten. Es ist auch praktisch für Factory-Methoden auf Companion-Objekten. Abgesehen davon sollte Vorsicht walten gelassen werden, da es einer dieser Dinge ist, die Ihren Code leicht zu kompakt machen können, um tatsächlich lesbar zu sein.

    
Dave Griffith 23.08.2010 21:21
quelle
5

Wie bereits erwähnt, möchten Sie apply :

überladen %Vor%

Wenn Sie schon dabei sind, möchten Sie vielleicht auch das Companion-Objekt überladen apply:

%Vor%

Dann können Sie:

%Vor%

ob dies ein Vorteil oder eine Verwirrung ist, hängt davon ab, was Sie versuchen zu tun.

    
Rex Kerr 23.08.2010 20:50
quelle
4

Ich denke, es funktioniert mit apply: Wie funktioniert Scala apply () -Methode Magie arbeiten?

    
Timo Westkämper 23.08.2010 20:27
quelle

Tags und Links