2017-11-03 2 views
0

Lassen Sie uns zwei Quellen haben:Kann das Paket-Objekt irgendwie definiert werden, so dass seine Anwendung mit einem syntaktischen Zucker aufgerufen wird?

Library/package.scala:

package object Library { 
    def apply(name: String) = name.reverse 
} 

Main.scala:

object Main extends App { 
    println(Library.apply("reverse me")) // works 
    println(Library("reverse me")) // error: package Library is not a value 
} 

Gibt es eine Möglichkeit, um dieses? Kann ich etwas in das Paketobjekt oder irgendwo anders einfügen, so dass ich das Objekt direkt mit dem syntaktischen Zucker aufrufen kann, ohne explizit angeben zu müssen?

+0

Warum ein 'Paket object'? – cchantep

+0

Ich passe ziemlich große Quellbasis an, die von einer anderen Sprache umgewandelt wird. Es existiert bereits ein Paket 'Library' mit vielen Objekten und es existiert auch ein Wert' Library', auf den (als Map) zugegriffen wird, um einzelne Objekte zu erhalten. – Suma

+0

Es entspricht nicht der üblichen Kodierungskonvention für Scala-Code – cchantep

Antwort

0

Nach einigem Experimentieren es fiel mir ein, kann ich ein Hilfsobjekt mit dem gleichen Namen verwenden, aber in einem anderen Paket oder ein Objekt eingeschlossen ist, wie folgt aus:

object LibraryApply { 
    object Library { 
    def apply(name: String) = _root_.Library.apply(name) 
    } 
} 
import LibraryApply._ 
Verwandte Themen