Используя более простой пример, чтобы проиллюстрировать:
def method[T : Manifest](param : T) : ResultType[T] = ...
Обозначение T : Manifest
означает, что привязан к контексту .В другом месте вашей программы в области действия должен быть определен синглтон или значение типа Manifest[T]
, помеченное как неявное.
Это достигается компилятором, переписывающим сигнатуру метода для использования второго (неявного) параметраblock:
def method[T](param : T)(implicit x$1 : Manifest[T]) : ResultType[T] = ...
Как показывает ваш пример, несколько контекстных границ могут использоваться в одной и той же сигнатуре метода.Также возможно комбинировать их с границами просмотра.