Есть ли в Scala альтернативный синтаксис «Список»? Можно ли определить один дополнительный класс / тип / оператор * под названием «[» и «]»?
Я знаю, что «квадратные скобки» используются для обозначения типа, но они идеально подходят для повторяющейся задачи объявления списков.
A ';' или '?' также было бы хорошо в качестве последнего ресурса.
Спасибо
obs .: после долгих поисков единственной альтернативой, которую я нашел, было использование 'cons':
val list = 1 :: 2 :: 3 :: Nil
, но это никак не сокращает набор клавиш.
EDIT: Чтобы уточнить: в моем случае производительность не является приоритетом. И да, сдвиг не приветствуется. :П Скрытая мотивация: мне нравится стиль Haskell, но я не могу использовать его напрямую с Java.
РЕДАКТИРОВАТЬ 2: Окончательное решение, основанное на обоих решениях Рекса Керра
, реализующих типы объектов:
package a
object Types {
type \[z] = List[z]
implicit def make_lists[A](z: A) = new ListMaker(z)
class ListMaker[A](a0: A) {
private[this] val buffer = List.newBuilder[A]
buffer += a0
def \(z: A) = {
buffer += z;
this
}
def \\ = buffer.result
}
}
с использованием типов объектов:
package a
import a.Types._
object Whatever {
def listInListOut (l: \[Int]) = {
1\2\\
}
}