2017-06-15 15 views
0

私はまだScalaを初めてお使いで、パッケージオブジェクトについて質問があります。タイプ定義のパッケージオブジェクト

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

私はにこれらのタイプの定義を置く傾向がある:私はコマンドを処理する関数を定義したいと思い、今

trait Command 

case object Help extends Command 

は、私は、次の特性を含むパッケージcom.pack.age.commandを持っていますパッケージオブジェクト

package object command { 
    type CommandArgument = scala.Any 
    type CommandProcessor = Command => CommandArgument => Unit 
} 

これらのタイプはすべてのコマンドで同じですから、私にはかなり論理的に見えます。

しかし、Scalaではそういうのが一般的ですか?

+2

は、このような目的のためにタイプエイリアスを宣言一般的ですが、Any'が良くない '使用。それぞれの 'Command'サブクラスを定義するときには、' CommandArgument'の型パラメータを使うのがよいでしょう。 – Naetmul

+0

@Naetmulは「Any」型は恐ろしいと言います。私がこの点について教えてくれる 'akka'に関する次の暴言を見てください:http://stew.vireo.org/posts/I-hate-akka/ – Yaneeve

+0

@Naetmul実際に私は' Option [String] '引数として、より一般的な型を提供することを望んでいた。 –

答えて

1

私は個人的にタイプエイリアスが好きですが、これらのことは、コミュニティメンバーが他のものよりも多くを使用している場合、非常に主観的です。

次の推奨事項を見てみましょう:

Twitter's Effective Scala style guide

関連する問題