Scala, параметризированные объекты

77
8

Можно ли получить:


object test[A](l: Int): List[A] = {
...
}

Ты знаешь, что я имею в виду. Возможно ли это?

спросил(а) 2021-01-25T14:59:38+03:00 4 месяца, 4 недели назад
1
Решение
99

Возможно, вы имеете в виду что-то вроде


object MyListMaker {
def test[A](a0: A, n: Int): List[A] = (1 to n).map(_ => a0).toList
}

scala> MyListMaker.test("Fish",7)
res0: List[java.lang.String] = List(Fish, Fish, Fish, Fish, Fish, Fish, Fish)

Существует только одна копия объекта; если вы хотите создать метод, который делает что-то общее, добавьте параметр type в метод (а не объект).

ответил(а) 2021-01-25T14:59:38+03:00 4 месяца, 4 недели назад
77

Черты или объекты не могут иметь параметры конструктора, а объекты не могут иметь параметры типа.


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

Ваш лучший вариант - определить метод внутри объекта, который возвращает нужный вам список.

ответил(а) 2021-01-25T14:59:38+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема