1
如果我有以下類型和功能:階參考值
object M {
type X[Boolean] = Int => Boolean
def retrieveVal(x: X[Boolean]) : Boolean = //retrieve the Boolean value of x
}
我怎麼會去檢索並返回boolean值?
如果我有以下類型和功能:階參考值
object M {
type X[Boolean] = Int => Boolean
def retrieveVal(x: X[Boolean]) : Boolean = //retrieve the Boolean value of x
}
我怎麼會去檢索並返回boolean值?
這是一個奇怪的類型別名。它有一個正式的類型參數(名稱不相關,因此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
要解釋的第二句對於不熟悉所使用術語的人來說:'X'的定義等同於'type X [T] = Int => T',所以你需要考慮如果這是你想要的或者類型X = Int => Boolean'。 –