2014-12-08 3 views
1

Предоставляет ли Scala какой-либо синтаксический сахар для неявных аргументов, которые не принимают общий тип? Было бы хорошо, за исключением случаев, когда я на самом деле не нужны аргументы, и поэтому не заботятся, чтобы перечислить имена аргументов, и т.д. я ищу что-то подобноеScala sugar for non-generic неявные аргументы

def foo[A: Monoid](a: A) 

, но для таких типов, как ExecutionContext , которые не имеют никаких параметров типа.

+0

Вы можете определить класс типа 'case class WrappedExecContext [A] (ec: ExecutionContext)' и использовать его аналогично «Monoid». –

+0

Не понадобилось бы столько же плиты котла, чтобы извлечь из него контекст выполнения, чтобы перейти к функциям, которые ожидают не завернутую версию? – sgrif

+0

Я думаю, что вы правы. Я попытался добавить преобразование «неявного класса», но после этого он не выглядел так хорошо. Для этого потребовалось бы что-то вроде: 'Implicitly [WrappedExecContext [_]]. Ctx' или подобное. –

ответ

1

Нет, нет ничего подобного.

+0

Возможно, ссылка будет приветствоваться. ;) Или объяснить почему. –

+0

Я сомневаюсь, что будет ссылка на отсутствие функции, и я никогда не видел объяснений, почему. – lmm

+0

Иногда просматриваются списки рассылки для отсутствующих функций. –

0

Код:

def foo[A: Monoid](a: A) 

desugars к:

def foo[A](a: A)(implicit m: Monoid[A]) 

Если вы хотите что-то подобное для классов, как исполнения ExecutionContext, вы можете использовать только простой неявной ARG:

def foo[A](a: A)(implicit m: ExecutionContext) 

Я не уверен, какой сахар по этому поводу вам понравится.

Возможно, вам действительно захотелось чего-то другого, кроме моего понимания.

+0

Что-то, что позволяет мне просто указать тип, а не ключевое слово 'implicit' и указать аргументы, для случаев, когда мне просто нужно неявное, поэтому я могу делегировать другой метод, который требует того же неявного. – sgrif

Смежные вопросы