Ключевое слово Scala Type: как лучше всего использовать его в нескольких классах

Возвращаясь к Scala После написания заклинаний Haskell, я начал использовать ключевое слово типа, чтобы сделать моих определений класса немного более читаемой, например:

type RestfulParams = Map[String, String]
def canonicalize(params: RestfulParams): String = { ... }

Проблема, в которой я столкнулся Что эти определения типа должны жить внутри класса или объекта - они не «граждан первого класса», как они находятся в Haskell. Если я стараюсь определить тип вне класса или объекта, я получаю компилятор Определение класса или объекта .

Моя проблема заключается в том, как использовать эти типы на нескольких классах и объектах в упаковке? То, что я сделал сейчас, кажется довольно уродливым:

object RestfulTypes { type RestfulParams = Map[String, String] etc }

, а затем в другом классе:

import utils.{RestfulTypes => RT}
def get(resource: String, params: RT.RestfulParams): String = { ... }

Есть ли приятный способ сделать это - и кстати сделать Scala Guurus думаю, что это хорошая вещь или плохая вещь, которую типы могут быть определены только внутри классов / объектов?

70
задан Alex Dean 16 September 2011 в 07:14
поделиться