Function scala参数的引用值
如果我有以下类型和功能:Function scala参数的引用值,function,scala,types,Function,Scala,Types,如果我有以下类型和功能: object M { type X[Boolean] = Int => Boolean def retrieveVal(x: X[Boolean]) : Boolean = //retrieve the Boolean value of x } 如何检索和返回布尔值?这是一个特殊的类型别名。它有一个形式类型参数(其名称不相关,因此选择Boolean会产生误导),用于定义从Int到该任意类型的函数。然后定义一个方法,retrieveVal,它接受
object M {
type X[Boolean] = Int => Boolean
def retrieveVal(x: X[Boolean]) : Boolean = //retrieve the Boolean value of x
}
如何检索和返回布尔值?这是一个特殊的类型别名。它有一个形式类型参数(其名称不相关,因此选择
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
这是一个特殊的类型别名。它有一个形式类型参数(其名称不相关,因此选择
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
,因此,您需要考虑这是否是您想要的,或者是typex=Int=>Boolean
是否是。为不熟悉所用术语的人解释第二句话:X
的定义相当于typex[T]=Int=>T
,因此,您需要考虑这是您想要的还是typex=Int=>Boolean
。