2017-06-15 65 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] '作为一个参数,但我想提供更一般的类型。 –

回答

相关问题