'MyType = Int =>是什么意思布尔”

时间:2012-09-28 09:46:37

标签: scala

以下scala声明的含义是什么:

type MyType = Int => Boolean

以下是我的理解:

我宣布了一种新类型' MyType'但更高阶函数是什么意思&n = Int =>布尔'

2 个答案:

答案 0 :(得分:14)

声明新的类型并不是声明一个新类型别名。它们仍然是同一类型:但别名让你更简洁地写它。

Int => Boolean是一个函数的类型,它接受一个参数,一个Int,并返回一个布尔值。

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

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

答案 1 :(得分:3)

你是对的,以下编译:

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 _
                           ^