Возвращаясь к Scala после написания заклинания на Haskell, я начал использовать ключевое слово 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думаете, это хорошо или плохо, что типы могут быть определены только внутри классов / объектов?