谁将参数传递给编译处理程序闭包的参数?
Who passed the arguments to the parameters of the complition handler closure?
func startUpdates(from start: Date,
withHandler handler: @escaping CMPedometerHandler)
typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void
上述函数从您的 iOS 设备中检索计步器数据。当我调用该函数时,我需要传递给的唯一参数是参数 from start
.
谁真正初始化了完成处理程序闭包的参数列表?我调用的 startUpdates
函数?
When I called the function the only argument I need to passed to is the parameter from start
这不是真的。
您还必须将闭包作为第二个参数传递。闭包本身在完成工作后由 startUpdates
函数调用,并返回两个参数,一个可选的 Data
和一个可选的 Error
实例。
函数式编程是一种非常方便的方式,能够运行任意代码(在闭包中)。
可以单独声明关闭
let result : CMPedometerHandler = { data, error in
if let error = error { print(error); return }
// do something with the data
}
startUpdates(from: Date(), withHandler: result)
或内联
startUpdates(from: Date(), withHandler: { data, error in
if let error = error { print(error); return }
// do something with the data
})
或使用尾随闭包语法
startUpdates(from: Date()) { data, error in
if let error = error { print(error); return }
// do something with the data
}
func startUpdates(from start: Date,
withHandler handler: @escaping CMPedometerHandler)
typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void
上述函数从您的 iOS 设备中检索计步器数据。当我调用该函数时,我需要传递给的唯一参数是参数 from start
.
谁真正初始化了完成处理程序闭包的参数列表?我调用的 startUpdates
函数?
When I called the function the only argument I need to passed to is the parameter from start
这不是真的。
您还必须将闭包作为第二个参数传递。闭包本身在完成工作后由 startUpdates
函数调用,并返回两个参数,一个可选的 Data
和一个可选的 Error
实例。
函数式编程是一种非常方便的方式,能够运行任意代码(在闭包中)。
可以单独声明关闭
let result : CMPedometerHandler = { data, error in
if let error = error { print(error); return }
// do something with the data
}
startUpdates(from: Date(), withHandler: result)
或内联
startUpdates(from: Date(), withHandler: { data, error in
if let error = error { print(error); return }
// do something with the data
})
或使用尾随闭包语法
startUpdates(from: Date()) { data, error in
if let error = error { print(error); return }
// do something with the data
}