只是为了好玩。
例如,我对用户有不同的操作,我想在不同的功能中故意分开。
所有这些功能(因为我想使它们不同)接收相同的参数
所以一般来说我会有很多这样的功能:
class func requestFriend(nickName : String, withCompletitionHandler completitionHandler : (status : Bool) -> Void)
class func acceptFriend(nickName : String, withCompletitionHandler completitionHandler : (status : Bool) -> Void)
现在能做什么真的很棒,会是这样的:
typealias UserActionTupleParameter = (nickName : String, completitionHandler : (status : Bool) -> Void)
将函数定义为:
class func acceptFriend => UserActionTupleParameter
{
}
并用作:
acceptFriend(myTupleVariable)
而不是使用def:
功能class func acceptFriend(parametersTuple : UserActionTupleParameter)
只会导致将函数调用为:
class func acceptFriend((myString, myBlock))
也许我错过了一些东西,或者我搞砸了参数命名,这些命令不允许我在没有元组“()”的情况下传递参数,但是我不能让Xcode 7 Swift 2接受我的意图。
我特意打算强制使用元组类型定义作为func定义中的func参数。
因为我知道我可以定义func,如:
func test (string : String, block : Block)
然后将元组创建为:
let tuple = (myString, myBlock)
并将该函数调用为:
test(tuple)
一些想法?
答案 0 :(得分:1)
这是你在找什么?
typealias UserAction = (nickname: String, completionHandler: Bool -> Void)
func testA(userAction: UserAction) -> Void {
NSLog("testA called for user \(userAction.nickname)")
userAction.completionHandler(true)
NSLog("testA exited")
}
func testB(userAction: UserAction) -> Void {
NSLog("testB called for user \(userAction.nickname)")
userAction.completionHandler(false)
NSLog("testB exited")
}
let myAction = UserAction("Willy") {
status in NSLog("myAction status is \(status)")
}