最佳答案
在写完 Haskell 之后,我又回到了 Scala,我开始使用 type 关键字来使我的类定义更具可读性,例如:
type RestfulParams = Map[String, String]
def canonicalize(params: RestfulParams): String = { ... }
我遇到的麻烦是,这些类型定义需要存在于一个类或对象中——它们不像在哈斯克尔那样是“一等公民”。如果我尝试在类或对象之外定义一个类型,我会得到一个编译器 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 专家认为只能在类/对象中定义类型是好事还是坏事?