2017-06-15 3 views
0

Ich bin noch neu bei Scala und habe eine Frage zum Paketobjekt.Paketobjekt für Typdefinitionen

Ich habe ein Paket com.pack.age.command welches folgendes Merkmal umfasst:

trait Command 

case object Help extends Command 

Nun wäre Ich mag eine Funktion definieren, Befehle zu verarbeiten:

type CommandArgument = scala.Any 
type CommandProcessor = Command => CommandArgument => Unit 

I neigen dazu, diese Typdefinitionen setzen in ein Paketobjekt.

Der Grund ist, dass diese Typen für alle Befehle gleich sind, so dass es logisch für mich aussieht.

Aber ist es üblich, so in Scala zu tun?

+2

Deklarieren Typ alias für solche Zwecke ist üblich, aber mit 'Any' nicht gut ist. Vielleicht sollten Sie besser einen Typparameter für 'CommandArgument' verwenden, wenn Sie jede Unterklasse' Command' definieren. – Naetmul

+0

Wie @Naetmul sagt Typ 'Any' ist schrecklich. Schaut euch das folgende Geschrei über 'akka' an, das ich in diesem Punkt lehrreich finde: http://stew.vireo.org/posts/I-hate-akka/ – Yaneeve

+0

@Naetmul Eigentlich wollte ich' Option [String] verwenden 'als ein Argument, aber ich wollte allgemeineren Typ zur Verfügung stellen. –

Antwort

1

Obwohl ich persönlich gerne Aliase, diese Dinge, finde ich sehr subjektiv, wo einige Community-Mitglieder sie mehr als andere verwenden.

Werfen Sie einen Blick auf die folgenden Empfehlungen:

Twitter's Effective Scala style guide

Verwandte Themen