注册 登录
主题 : 语法的问题求教
级别: 新手上路
UID: 21331
精华: 0
发帖: 5
可可豆: 32 CB
威望: 32 点
在线时间: 336(时)
注册时间: 2010-06-06
最后登录: 2017-07-25
楼主 : 发表于: 2017-07-17 17:05    发自: Web Page
来源于 技术求助 分类

语法的问题求教   

复制代码
  1. func fun1(a:Int)->Int{
  2.     let f = otherFunc(x: Float(a))
  3.     return Int(f)
  4. }
  5. func fun2(a:UInt)->UInt{
  6.     let f = otherFunc(x: Float(a))
  7.     return UInt(f)
  8. }
  9. func fun3(a:Double)->Double{
  10.     let f = otherFunc(x: Float(a))
  11.     return Double(f)
  12. }
  13. func otherFunc(x:Float)->Float{
  14.     return x*Float.pi
  15. }
  16. func fun<T>(a:T)->T{
  17.     //该怎么写?
  18. }


求教大神,如果我想把上面三个函数,写成范型函数,该怎么去写?

  
级别: 骑士
UID: 18112
精华: 0
发帖: 239
可可豆: 1340 CB
威望: 1350 点
在线时间: 298(时)
注册时间: 2010-04-21
最后登录: 2017-07-25
沙发 : 发表于: 2017-07-20 13:54    发自: Web Page
当然可以按照古怪的OC思维写,写出来很奇怪。 建议用下面的写法:


复制代码
  1. protocol SomeProtocol {
  2.     func convertFloat()->Float?
  3. }
  4. func fun<T:SomeProtocol>(a:T)->T{
  5.     if let m = a.convertFloat() {
  6.         //blablabla
  7.     }
  8. }

你看我不到
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

验证问题:
苹果公司现任CEO是谁?2字 正确答案:库克

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部