从右到左输入推断

时间:2011-09-27 23:18:09

标签: scala

我创建了以下代码段:

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 个答案:

答案 0 :(得分:5)

这两个问题相关:SI-4773SI-1980。基于这些问题,你的问题的答案似乎是否定的。虽然与你的问题没有直接关系,但Paul Chiusano在making the most of type inference in Scala上发表了一篇非常好的文章,其中阐述了Scala中当前的类型推断状态,并提供了一些有用的建议。