需求是这样的,有个函数返回一个函数,代码如下
export type StringCallback = (value : string) => void
export type VoidCallback = () => void
function voidCallback(@escaping cb: VoidCallback): (value: object) => void {
return function(value: object):void {
cb()
}
}
function stringCallback(@escaping cb: StringCallback): (value: object) => void {
return (value: object) => {
cb(value as string)
}
}
在iOS平台,生成的swift是
public typealias StringCallback = (_ value: String) -> Void;
public typealias VoidCallback = () -> Void;
public func voidCallback(_ cb:@escaping VoidCallback) -> (_ value: Any) -> Void {
return func(_ value: Any) -> Void {
cb();
}
;
}
public func stringCallback(_ cb:@escaping StringCallback) -> (_ value: Any) -> Void {
return (value: Any)=>{
cb(value as! String);
}
;
}
swift语言是错误的,请问我怎么样才能实现定一个函数,这个函数返回一个函数的功能
1 个回复
DCloud_iOS_LZY
1、uts中没有object 类型,需要改成any。
2、目前iOS 上不支持直接返回匿名函数的语法,可以先用下面的方式绕过,返回匿名函数的语法后续编译器后兼容支持。