これがあなたの質問を示しているのか、それとも答えているのかはわかりませんが、本当です。
私の推測では、(パラメーターを入力するために) 属性を追加した後、 ab(_.i) が anon func であると予想したと思います。
しかし、部分式はあなたを失敗させますthere is no other expression of syntactic category Expr which is properly contained in e and which itself properly contains u.
(SLS 6.23)
また、scalac -Xprint:parser
どのように撮影されたかを確認するために使用することもできます。
object Foo {
def m(k: Int) = 7 * k
}
class Bar {
val i = 5
val What = i
}
object Bar {
type What = Int
}
object Test extends App {
Foo.m(_:Bar.What)
// this is not anon func placeholder syntax...
//Foo.m((_:Bar).What) // _ is in a subexpr
//Foo.m(_.i)
// ...for this
val f = (x: Bar) => Foo.m(x.i)
// InfixExpr is ok
val g = Foo m (_: Bar).i
val b = new Bar
println(f(b))
println(g(b))
}
対照的に、何が制限されているかを説明します。
scala> val f: (Int,Int)=>Int = _+_
f: (Int, Int) => Int = <function2>
scala> val g: Int=>Int = if (_ > 0) 1 else 2
<console>:7: error: missing parameter type for expanded function ((x$1) => x$1.$greater(0))