在写完Haskell拼写之后回到Scala,我开始使用type关键字使我的类定义更具可读性,例如:
type RestfulParams = Map[String, String]
def canonicalize(params: RestfulParams): String = { ... }
我遇到的麻烦是这些类型定义需要存在于类或对象中-它们不是像Haskell中那样的“一流公民”。如果我尝试在类或对象之外定义类型,则会得到编译器expected class or object definition
。
那么我的问题是如何在包中的多个类和对象之间使用这些类型?我现在所做的事情看起来很丑陋:
object RestfulTypes { type RestfulParams = Map[String, String] etc }
然后在另一个类文件中:
import utils.{RestfulTypes => RT}
def get(resource: String, params: RT.RestfulParams): String = { ... }
有没有更好的方法可以做到-顺便问一下,Scala专家认为类型只能在类/对象中定义是好事还是坏事?
import utils.RestfulTypes._
呢?