【发布时间】:2012-11-16 03:59:36
【问题描述】:
我尝试在 REPL 中从 Scala in Depth 运行以下 sn-p:
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 进行比较来执行函数,本质上返回一个布尔值?
为什么编译器会在这里抛出所有这些错误?
【问题讨论】: