如果我有以下类型和功能:
object M {
type X[Boolean] = Int => Boolean
def retrieveVal(x: X[Boolean]) : Boolean = //retrieve the Boolean value of x
}
我如何检索并返回布尔值?
答案 0 :(得分:4)
这是一种特殊类型的别名。它有一个正式的类型参数(其名称无关,因此选择Boolean
具有误导性),它定义了从Int
到该任意类型的函数。然后,您定义一个方法retrieveVal
,该方法采用恰好X
的特定X[Boolean]
(此处Boolean
是实际类型参数因此 我们熟悉的Boolean
并返回一些Boolean
。但是,作为参数传递的函数x
需要Int
参数,并且没有证据。
所以,如果你的retrieveVal
被定义为这样:
def retrieveVal(i: Int, x: X[Boolean]): Boolean = ...
你可以这样定义:
def retrieveVal(i: Int, x: X[Boolean]): Boolean = x(i)
即便:
scala> type X[Boolean] = Int => Boolean
defined type alias X
scala> def retrieveVal(i: Int, x: X[Boolean]): Boolean = x(i)
retrieveVal: (i: Int, x: Int => Boolean)Boolean
scala> retrieveVal(23, i => i % 2 == 0)
res0: Boolean = false