在快速,可以一个函数是一个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。