Как использовать «неявный» в качестве параметра apply ()?

Я хочу сделать это:

abstract class Context {
    def getInt(id: Int): Int
}

abstract class Dependency[+T]
(val name: String, val id: Int)
extends Function1[Context,T]

class IntDependency(name: String, id: Int)
extends Dependency[Int](name, id) {
    def apply(implicit context: Context): Int =
        context.getInt(id)
}

Но затем я получаю сообщение об ошибке, подобное этому:

class IntDependency needs to be abstract, since method apply in trait
Function1 of type (v1: Context)Long is not defined (Note that T1 does
not match Context)

Я понимаю, что имплициты обычно должны быть частью второй список параметров , но я не могу понять, как его закодировать, чтобы он компилировался и давал желаемый результат.

Explanation: Я пытаюсь создать структуру, в которой можно определить " Функция "объект, который может зависеть от других функций для вычисления своего значения. Все функции должны принимать только один параметр контекста. Контексту известен" результат "других функций. Экземпляры функций должны быть неизменяемыми, а состояние должно находиться в контекст. Я хочу, чтобы функции создавали поля «зависимости» во время создания, которые неявно принимают контекст , и возвращают значение зависимости в этом контексте, чтобы получить доступ к зависимости внутри метода apply » похоже на "доступ к параметру или полю, то есть без явного указания контекста t в качестве параметра зависимости.

5
задан Falko 29 July 2015 в 14:42
поделиться