REPLのScalainDepthから次のスニペットを実行してみました。
val notNull[T]: T => Boolean = _ != null
通訳は私に次のエラーを投げました:
<console>:7: error: missing parameter type for expanded function ((x$1) => x$1.$bang$eq(null))
val notNull[T]: T => Boolean = _ != null
^
<console>:7: error: not found: type T
val notNull[T]: T => Boolean = _ != null
^
<console>:7: error: not found: type notNull
val notNull[T]: T => Boolean = _ != null
^
<console>:7: error: not found: type T
val notNull[T]: T => Boolean = _ != null
^
scala> val notNull[T](f1: T => Boolean) = _ != null
<console>:1: error: ')' expected but '=>' found.
val notNull[T](f1: T => Boolean) = _ != null
たぶん私はここでのステートメントを理解していませんが、基本的には、Tを引数として取り、ブール値を返す関数を返すタイプTのvalnotNullを宣言するという本のステートメントではありません。`_!= nullは、引数を取り、それをnullと比較することによって関数を実行し、本質的にブール値を返しますか?
コンパイラがこれらすべてのエラーをここでスローするのはなぜですか?