以下scala声明的含义是什么:
type MyType = Int => Boolean
以下是我的理解:
我宣布了一种新类型' MyType'但更高阶函数是什么意思&n = Int =>布尔'
答案 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 _
^