【发布时间】:2011-11-18 11:15:21
【问题描述】:
在写完 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._?