2017-06-15 64 views
0

我還是Scala的新手,對包對象有疑問。類型定義的包對象

我有一個包com.pack.age.command其中包含以下特點:

trait Command 

case object Help extends Command 

現在,我想定義一個函數來處理命令:

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

我傾向於把這些類型定義成一個包對象。

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

的原因是,這些類型相同的所有命令,所以它看起來非常邏輯上給我。

但是在Scala中這樣做很常見嗎?

+2

聲明類型別名用於上述目的是共同的,但使用'Any'不好。也許你最好在定義每個Command子類時爲CommandArgument使用一個類型參數。 – Naetmul

+0

正如@Naetmul所說的「任何」類型都很可怕。看看下面關於'akka'的咆哮,我覺得這點很有教育意義:http://stew.vireo.org/posts/I-hate-akka/ – Yaneeve

+0

@Naetmul其實我想用'Option [String] '作爲一個參數,但我想提供更一般的類型。 –

回答

相關問題