您的位置:首页 > 移动开发 > Swift

Swift-基础-7

2016-06-21 11:21 387 查看
importFoundation

print("Hello, World!")

//39、使用可选链式调用代替强制展开

//当声明一个的属性时,将属性类型设置为可选类型:好处:当可选类型的属性被赋予初始值时,系统调用初始值;当可选类型属性没有赋予初始值时,系统只会调用失败,如果强制展开就会崩溃;如果属性为一般类型,则必须赋予初始值
structPoint {

   varwidth :Int=0

}

classPerson {

   varname :String=""

   

   varage :Int?

   

   //
   varpo :Point?

   

   

}

varperson1 =Person.init()
person1.name="sfsd"
print(person1.name)
print(person1.age)

//print(person1.po!.width)

person1.po=Point.init()
person1.po?.width=1000

print(person1.po?.width)

/*********40、类型匹配*********/
//1.检查类型  is
vararray = [1,2,"10","68",7,10]
varstrNum =0
varintNum =0
foriinarray{

   ifiisInt{

       intNum+=1

    }

   ifiisString{

       strNum+=1

    }

}
print(intNum,strNum)

//2.向下转型as?或as!

//NSMutableArray  NSArray  Array

vararr =NSMutableArray.init(capacity:0)
arr.addObject(1)
arr.addObject(2)

letarr2 =arrasNSArray
letarr3 =arr2asArray
print(arr3)
print(arr2)

//3.Any和AnyObject:

//a.AnyObject可以表示任何类类型的实例。

//b.Any可以表示任何类型,包括函数类型。
vararray6 : [AnyObject] = [1,2,3,4,"io"]

print(array6)

/*************41、扩展*********/
//1.扩展语法  extension
extensionInt{

   //2.属性扩展
   vara :Int{

       returnself*10

    }

   //3.方法扩展
   funcage() ->Void{

       print("age")

    }

   

}

//使用扩展
varss :Int=5
print(ss)
print(ss.a)
ss.age()

//如果给父类进行扩展,子类同样可以获取到
classStudent {

   varname =""

}
classXiao:Student{

   varage =2

}

extensionStudent{

   funceat() ->Void{

       print("eat")

    }

}

varstu =Student.init()
stu.eat()

varxiao =Xiao.init()
xiao.eat()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息