闲言碎语:apple的swift已经2.1了,自己刚看1.0的时候总觉得swift还太年轻,还有很多不完善,就没有太在意。不过现在都更新到2.1了。apple的官方宣传说swift效率很高(开发和性能)再加上BOSS说以后要用swift开发.自己就开始学习swift。看了两天写下自己的心得
一,基本运算符
swift中的基本运算符:
赋值运算符( a=b )
算术运算符( a+b、a-b、a*b 、a/b 、a%b、a++、a--、++a、--a、+a、-a)
比较运算符( a==b、a>b、a=b、a<=b、a!=b )
组合赋值运算符(a+=b、a-=b、a*=b、a/=b )
三目运算符( question ? answer1: answer2 )
逻辑运算符( !a 、 a&&b 、a||b )
空合运算符( a??b)
区间运算符( a...b)
以上就是swift的基本运算符,对于前六个我想就不用多说了,只要会编程语言的就知道(如果不知道所有的程序猿都会鄙视你的哦)
空合运算符??是oc和c++中没有的。下面是官方文档
意思是说a??b的意思是如果a为 nil 那么 就返回一个 b 如果a 不为nil 那么就解包a返回a的值所以
1、为了类型安全b的类型要和a 的类型相同
2 、a必须是optional类型
a??b 也可以用a=!nil? a! :b表示
Example:
<span style="color:#333333;">extension Int{
func productRandom() -> [Int]
{
var arrayList:[Int] = [Int]()
for var i=0; i<self; i++
{
let a:Int = Int(arc4random_uniform(100))
arrayList.append(a)
}
return arrayList
}
}
class ViewController: UIViewController {
var arrayList:[Int]?
var defaultList = 20.productRandom()
var nums:[Int] = [Int]()
func test1(){
nums = arrayList ?? defaultList
print(nums)
}
func test2(){
arrayList = 30.productRandom()
nums = arrayList ?? defaultList
print(nums)
}
override func viewDidLoad() {
super.viewDidLoad()
test1()
test2()
}
}</span>
test1()输出为(arrayList 没有初始化时nums 为defaultList)
test2()输出为(arrayList已经初始化 nums 为ArrayList)
空合运算符可以极大的简化代码。也可以增强程序的健壮性,可读性
区间运算符a...b
区间运算符主要用在有区间的数组中 ,
a..b 表示a到b的值包括a和b
a..<b 表示a到b的值包括a不包括b
example:继续在viewController中添加方法
func rangeTest1(){
for index in 0...nums.count-1{
print("\(index):\(nums[index])")
}
}
func rangeTest2(){
for index in 0..<nums.count-1{
print("\(index):\(nums[index])")
}
}
然后在viewDidLoad中使用
rangeTest1()
rangeTest2()
可以先将test1()、test2()中的print()注释
打印后可以发现
rangeTest1()会输出30个数
rangeTest2()会输出29个数