Тип вывода справа налево

Я создал следующий фрагмент кода:

class PimpToRight[A](f: A => Boolean) {
  def <| (a: A) = f(a)
}
implicit def f2pimp[A](f: A => Boolean) = new PimpToRight(f)

class PimpToLeft[A](a: A) {
  def <|: (f: A => Boolean) = f(a)
  def |> (f: A => Boolean) = f(a)
}
implicit def a2pimp[A](a: A) = new PimpToLeft(a)

существуют правые и левые ассоциативные методы.

следующий код работает:

((_: Int) > 3) <| 7
((_: Int) > 3) <|: 7
7 |> (_ > 3)

но это не:

(_ > 3) <| 7
(_ > 3) <|: 7

можно ли вывести параметры типа справа налево?

1 ответов


эти два вопроса связаны:SI-4773 и SI-1980. Исходя из этих вопросов, ответ на ваш вопрос, похоже, нет. Хотя это напрямую не связано с вашим вопросом, Есть очень хороший пост пола Кьюзано на максимально использовать вывод типа в Scala, который обращается к текущему состоянию вывода типа в Scala и предоставляет некоторые полезные советы.