i***@gmail.com
i***@gmail.com
  • 发布:2024-08-16 10:44
  • 更新:2024-08-16 11:55
  • 阅读:122

[报Bug]UTS iOS返回函数的函数生成swift代码不正确

分类:uts

需求是这样的,有个函数返回一个函数,代码如下

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语言是错误的,请问我怎么样才能实现定一个函数,这个函数返回一个函数的功能

2024-08-16 10:44 负责人:无 分享
已邀请:
DCloud_iOS_LZY

DCloud_iOS_LZY

1、uts中没有object 类型,需要改成any。
2、目前iOS 上不支持直接返回匿名函数的语法,可以先用下面的方式绕过,返回匿名函数的语法后续编译器后兼容支持。

export type StringCallback = (value : string) => void    
export type VoidCallback = () => void    

export function voidCallback(@escaping cb: VoidCallback): (value: any) => void {    
    function testVoid(value: any):void {    
        cb()    
    }   

    return testVoid  
}    

export function stringCallback(@escaping cb: StringCallback): (value: any) => void {    
    function testString(value: any): void {    
        cb(value as string)    
    }   
    return testString  
}

要回复问题请先登录注册