Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function scala参数的引用值_Function_Scala_Types - Fatal编程技术网

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