注册 登录
主题 : 语法的问题求教
级别: 新手上路
UID: 21331
精华: 0
发帖: 6
可可豆: 42 CB
威望: 42 点
在线时间: 431(时)
注册时间: 2010-06-06
最后登录: 2017-11-13
0 楼:  发表于: 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
发帖: 270
可可豆: 1371 CB
威望: 1381 点
在线时间: 336(时)
注册时间: 2010-04-21
最后登录: 2017-11-12
1 楼:  发表于: 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. }

你看我不到
级别: 精灵王
状态: 连续签到 - [3天]
UID: 32307
精华: 0
发帖: 650
可可豆: 5692 CB
威望: 5685 点
在线时间: 467(时)
注册时间: 2010-09-30
最后登录: 2017-11-17
2 楼:  发表于: 2017-07-26 17:51    发自: Web Page
看来现在大家都开始用swift了
描述
快速回复

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

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

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