Scala:文本的类型声明
在光滑的“动态过滤器”示例中,我遇到了Scala中以前从未见过的语法: true:Rep[Boolean]Scala:文本的类型声明,scala,Scala,在光滑的“动态过滤器”示例中,我遇到了Scala中以前从未见过的语法: true:Rep[Boolean] val q4 = coffees.filter { coffee => List( criteriaColombian.map(coffee.name === _), criteriaEspresso.map(coffee.name === _), criteriaRoast.map(coffee.name === _) // not a co
val q4 = coffees.filter { coffee =>
List(
criteriaColombian.map(coffee.name === _),
criteriaEspresso.map(coffee.name === _),
criteriaRoast.map(coffee.name === _) // not a condition as `criteriaRoast` evaluates to `None`
).collect({case Some(criteria) => criteria}).reduceLeftOption(_ || _).getOrElse(true: Rep[Boolean])
}
因此,我在repl中尝试了类似于:1:Int
,“s”:String
它是用来干什么的?要明确指定文本的类型,请执行以下操作:
(expression : Type)
被称为类型归属。它用于确保您对代码中某些表达式类型的假设是正确的,或者帮助编译器进行类型推断
它还有第三个用途:强制对指定类型进行隐式转换
说到咖啡,我不是专家,但唯一合理的解释是:
- 在作用域的某个地方有一个类型构造函数
Rep[X]
- 在隐式范围中,有一个带有签名的隐式转换
- 在隐式范围中,有一个带有签名的多态转换
-print
,以查看隐式转换插入的位置
implicit def booleanIsRep(b: Boolean): Rep[Boolean] = ...
implicit def everythingCanWrapToRep[X](x: X): Rep[X] = ...