scala: использование метода класса с параметром типа, который не требует типа - PullRequest
0 голосов
/ 30 января 2020

В этом классе метод incrementX не зависит от параметра типа A.

class Item[A](var x: Int, var y: A) {
    def incrementX() = {
        this.x += 1
    }
    def changeY(func: A => A) = {
        this.y = func(y)
    }
}

Как я могу вызвать его, учитывая экземпляр с неизвестным параметром типа, без извлечения одного из методы другого класса или черты?

def incrementXTwice(item: --type that incrementX can be invoked on--) {
    item.incrementX()
    item.incrementX()
}

(примеры приведены для иллюстрации)

1 Ответ

2 голосов
/ 30 января 2020

Экзистенциальный тип:

def incrementXTwice(item: Item[_])

или параметр типа

def incrementXTwice[A](item: Item[A])

В первом предполагается, что знание специфика c A потеряно и не может быть восстановлено, в последнем предполагается, что этот метод не должен знать это, но вызывающий знает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...