在光滑的"动态过滤器"例如,我在Scala中遇到过以前没见过的语法:
true:Rep [Boolean]
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])
}
所以我尝试过像:1: Int
,"s": String
它用于什么?要明确指定文字的类型?
答案 0 :(得分:2)
这里:
(expression : Type)
称为类型归属。它用于确保您对代码中某些表达式的类型的假设是正确的,或者用于帮助编译器进行类型推断。
第三种用法是:强制隐式转换为指定的类型。
在咖啡方面,我不是专家,但唯一合理的解释是:
Rep[X]
-
implicit def booleanIsRep(b: Boolean): Rep[Boolean] = ...
或者,或者:
-
implicit def everythingCanWrapToRep[X](x: X): Rep[X] = ...
您可以尝试添加编译器选项-print
以查看插入隐式转换的位置。