下面的 scala 声明是什么意思:
type MyType = Int => Boolean
这是我的理解:
我声明了一个新类型“MyType”,但高阶函数“Int => Boolean”是什么意思
下面的 scala 声明是什么意思:
type MyType = Int => Boolean
这是我的理解:
我声明了一个新类型“MyType”,但高阶函数“Int => Boolean”是什么意思
与其声明一个新类型不如声明一个新类型alias。它们仍然是同一类型:但是别名让您可以更简洁地编写它。
Int => Boolean
是一个函数的类型,它接受一个参数,一个 Int,并返回一个布尔值。
例如,像“大于 5”这样的函数可能有 type 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 _
^