Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Scala 何谓';MyType=Int=>;布尔值';_Scala - Fatal编程技术网

Scala 何谓';MyType=Int=>;布尔值';

Scala 何谓';MyType=Int=>;布尔值';,scala,Scala,下面的scala声明是什么意思: type MyType = Int => Boolean 以下是我的理解: 我正在声明一个新类型“MyType”,但更高阶函数“Int=>Boolean”的含义是什么?与其说是声明一个新类型,不如说是声明一个新类型别名。它们仍然是相同的类型:但是别名让您的编写更加简洁 Int=>Boolean是一种函数类型,它接受一个参数,一个Int,然后返回一个Boolean 例如,像“大于5”这样的函数可以具有类型Int=>Boolean: type MyType

下面的scala声明是什么意思:

type MyType = Int => Boolean
以下是我的理解:


我正在声明一个新类型“MyType”,但更高阶函数“Int=>Boolean”的含义是什么?

与其说是声明一个新类型,不如说是声明一个新类型别名。它们仍然是相同的类型:但是别名让您的编写更加简洁

Int=>Boolean
是一种函数类型,它接受一个参数,一个Int,然后返回一个Boolean

例如,像“大于5”这样的函数可以具有类型
Int=>Boolean

type MyType = Int => Boolean
val greaterThan5: MyType = (x: Int) => x > 5
greaterThan5(7)  // true

如果您是正确的,则编译如下:

type MyType = Int => Boolean
def positive(x: Int) = x > 0
val fun: MyType = positive
fun(42)  //yields true
在这里,您声明类型别名,表示
MyType
相当于一个接受
Int
并返回
Boolean
的函数。然后创建一个与此类声明匹配的方法。最后,将此方法分配给
MyType
类型的变量。它编译和工作得很好

请注意,这只是一个别名,不是新类型:

trait MyType2 extends (Int => Boolean)
val fun2: MyType2 = positive _
error: type mismatch;
 found   : Int => Boolean
 required: MyType2
       val fun2: MyType2 = positive _
                           ^

请注意,
Int=>Boolean
不是一个高阶函数(即使代码片段来自“第2周:高阶函数”赋值;-)@netzwerg是的,似乎我发现即使是“简单”的东西也很难。别担心,这一个非常简单:高阶函数是以另一个函数作为输入参数,或返回/输出另一个函数()的函数。我刚刚学习了这门课程,这个美丽的声明一开始有点难以理解。这篇文章让我很好地理解了有趣的集合到底发生了什么,这类代码有助于理解Scala与“命令式”语言有多么有用和不同。。。