💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
函数类型,连同 [单形(第2.9节)](http://#) 一起,通常是对 Haxe 用户隐藏的很好的一个类型,尽管它们无处不在。我们可以使用 `$type`,一个特定的 Haxe 标识符,可以在编译时输出它的表达式的类型,来使它们表现出来: ~~~ class Main { static public function main() { // i : Int -> s : String -> Bool $type(test); $type(test(1, "foo")); // Bool } static function test(i:Int, s:String):Bool { return true; } } ~~~ 函数 `test` 的声明和` $type` 语句的输出有非常强的相似,但也有微妙的区别: * 函数参数被特殊的箭头符号 `->` 分隔,而不是逗号 `,` * 函数返回类型出现在结尾的另一个 `->` 符号之后 不论哪个记法,很明显,函数 `test` 接受第一个 Int 类型的参数,第二个 String 类型的参数,并返回一个 Bool 类型值。如果调用这个函数,例如 `test(1,"foo") `,并将其放在第二个 `$type` 语句中,Haxe 类型检查器检查 `1` 是否可以被分配到 Int 类型参数,然后检查 "`foo`" 是否可以被分配到 String 类型参数。调用的类型然后就会和 `test` 函数返回值的类型相同,即,一个 Bool 类型。 如果一个函数类型有其它函数类型的参数或者返回值,则可以使用括号对它们进行正确的分组。例如,`Int->(Int->Void)->Void` 表示一个函数,第一个参数为 Int 类型,第二个参数是函数 `Int->Void` 类型,返回 `Void`。