10

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

type MyType = Int => Boolean

这是我的理解:

我声明了一个新类型“MyType”,但高阶函数“Int => Boolean”是什么意思

4

2 回答 2

14

与其声明一个新类型不如声明一个新类型alias。它们仍然是同一类型:但是别名让您可以更简洁地编写它。

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

例如,像“大于 5”这样的函数可能有 type Int => Boolean

type MyType = Int => Boolean
val greaterThan5: MyType = (x: Int) => x > 5
greaterThan5(7)  // true
于 2012-09-28T09:48:52.473 回答
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 _
                           ^
于 2012-09-28T09:49:57.050 回答