在快速,可以一个函数是一个types?

在按Command + Click研究XCTAssert方法的同时,它看起来像是底层方法是一个具有types的函数(generics被称为T,符合Equatable协议)。 我是否正确地说,如果是这样,函数如何符合协议? 函数types是什么?

public func XCTAssertEqual<T : Equatable>(_ expression1: @autoclosure () throws -> ArraySlice<T>, _ expression2: @autoclosure () throws -> ArraySlice<T>, _ message: @autoclosure () -> String = default, file: StaticString = #file, line: UInt = #line) 

这行是我想解释上面最混乱的:

 func XCTAssertEqual<T : Equatable>` 

每个函数都有一个特定的函数types,由函数的参数types和返回types组成。

 typealias FooType = (Int, String)->String func foo(i: Int, s: String)->String { return s + "_\(i)" } func bar(foo0: FooType)->String { return foo0(100, "alpha") } print(bar(foo)) // alpha_100 let f:FooType = { i, s in return s + "_\(i)" } print(f(200, "beta")) // beta_200 

一个附录,特别是布兰登:-)

 let farr:[()->Int] = [{return 1}, {return 2}, {return 3}] for f in farr { print(f()) /* 1 2 3 */ } 

附录2,为布兰登

 func f1()->Int { return 1 } func f2()->Int { return 2 } let farr2:[()->Int] = [f1, f2] for f in farr2 { print(f()) /* 1 2 */ } 

应用程序3 🙂

 let farr2 = [f1, f2] for f in farr2 { print(f()) /* 1 2 */ } 

从苹果文档

Swift中的每个函数都有一个types,由函数的参数types和返回types组成。 你可以像Swift中的其他任何types一样使用这个types,这样可以很容易地将函数作为parameter passing给其他函数,并从函数返回函数。 也可以在其他函数中编写函数,以在嵌套的函数范围内封装有用的function。