Я хочу сделать это:
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 в качестве параметра зависимости.