我尝试在 REPL的深度中从 Scala运行以下代码段:
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 类型的 val notNull ,它返回一个以 T 作为参数并返回布尔值的函数。`_!= null 通过获取参数并将其与 null 进行比较来执行函数,本质上返回一个布尔值?
为什么编译器会在这里抛出所有这些错误?