Typedef в Scala

Как определить тип в Scala? Как

type MySparseVector = [(Int, Double)]

в Haskell или

typedef MySparseVector = std::list<std::pair(int, double)>> 

в С++?

Я пробовал

type MySparseVector = List((Int, Double))

но не может понять, как заставить его работать. Если я напишу это в начале файла класса, я получил ошибку "Ожидаемый класс или объект".

PS Извините, я ошибся. Я попытался использовать List [(Int, Double)] в Scala.

Ответ 1

type MySparseVector = List[(Int, Double)]

Пример использования:

val l: MySparseVector = List((1, 1.1), (2, 2.2))

Типы должны быть определены внутри класса или объекта. Вы можете импортировать их впоследствии. Вы также можете определить их в объекте пакета - импорт не требуется в одном пакете, и вы все равно можете импортировать их в другие пакеты. Пример:

// file: mypackage.scala
package object mypackage {
  type MySparseVector = List[(Int, Double)]
}

//in the same directory:
package mypackage
// no import required
class Something {
  val l: MySparseVector = Nil
}

// in some other directory and package:
package otherpackage
import mypackage._
class SomethingElse {
  val l: MySparseVector = Nil
}