• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用swift extention练习 扩展Int

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文是记录一下对swift extension的使用

首先extension即扩展类

用于扩展类功能,以适应不同人使用该类的时候不同需求
作为一个扩展,不能为类增加正常属性,但是可以增加计算属性(通过类其他属性计算出来的值) 。
扩展也可以为类增加功能函数

extension people{
func eat(food:Int) {
        self.weight += food
    } }

注意:当然当你为结构体要增加扩展函数的时候,而且这个函数需要改变某些结构体自带属性(重新赋值),需要在方法名字面前加上mutating,说明这个函数是用于赋值作用的。 因为结构体是值类型的,赋值他需要创建一个新的副本,而它不知道这个新的副本放在那里,加上mutating后他就会把这个副本覆盖到要set的地方

extension people{
mutating func eat(food:Int) {
        self.weight += food
    }
   }

一般扩展是使用在扩展系统类功能,封装函数,使我们快速达到需求

下面我扩展Int类的功能

让他帮我实现以下功能

  • 使用.toString获得整数的字符串类型
  • 使用.toBinaryString获得整数的二进制字符串类型
  • 使用.toCube获得整数的三次方
  • 使用下标获得整数的某个位的数 1234[1] ->2
import UIKit

//在OC中叫做分类
//扩展系统类函数 让其使用更加方便
extension Int{
   //获得该整数的字符串
   var toString : String{
      return String(self)
   }
   
   //三次方计算属性
   var toCube : Int{
   return self*self*self
   }
   //转换成二进制String
   var toBinaryString : String{
       get{ var res = String()
           var a = self
           
       repeat{
           res =  String(a%2) + res
           a = a/2
       }while(a != 0)
       return res
       }
   }
   //通过下标获得某个位的数
   subscript( index : Int) -> Int? {
//        assert(index>String(self).count&&index<0, "This is a invalid subscript")
       let a = String(self)
       if let res = Int(a[a.index(a.startIndex, offsetBy: index)].toString)
       {
           return res
       }
       return nil
   }
   
}
//扩展Character
extension Character{
   var toString : String{
   return String(self)
   }
}

var a = 100
a[1]
a.toString
a.toCube
a.toBinaryString

结果


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift--使图片360°周期旋转发布时间:2022-07-13
下一篇:
Swift-08-闭包引起的循环强引用发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap