Аннотирование неявного аргумента литерала функции с типом - PullRequest
1 голос
/ 04 апреля 2011

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

trait Test { def call[C, T](fun: C => T): T }

def test1(t: Test): Unit =
  t.call { c: Int => 33 } // ok

def test2(t: Test): Unit =
  t.call { implicit c => 33 } // type missing...

def test3(t: Test): Unit =
  t.call { (implicit c: Int) => 33 } // not possible...

1 Ответ

2 голосов
/ 04 апреля 2011

В Scala 2.8.0 введены неявные параметры для функциональных литералов. Но, как вы обнаружили, синтаксис был ограничен одним параметром без аннотации типа.

В Scala 2.9.0 можно использовать один типизированный аргумент.

https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/pos/t3672.scala?rev=23288

https://lampsvn.epfl.ch/trac/scala/changeset/23289

Они еще не обработаны парсером IntelliJ, хотя: http://youtrack.jetbrains.net/issue/SCL-2441

...