高效——易于讀和寫
例子1: 初始化可變數(shù)組并添加一個對象
Obj - C:用alloc分配內存嘉熊,init初始化
NSMutableArray *array1 = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
[array1 addObject:@"4"];
Swift:使用var聲明變量夏块,使用“+=”拼接兩個數(shù)組
var array1 = ["1", "2", "3"]
array1 += ["4"]
例子2: 取數(shù)組的第一個字符串對象疏咐,進行拼接并獲取range
Obj - C:用“[]”調用方法,比較冗長
[[[array1 objectAtIndex:0] stringByAppendingString:@"111"] rangeOfString:@"1111"];
Swift::用“.”調用方法拨扶,非常簡潔
array1[0].appending("111").range(of: "1111")
易于維護凳鬓,文件數(shù)量更少
Swift創(chuàng)建的文件只有一個.swift文件,相比于Obj-C的“.h”和“.m”文件患民,會讓文件數(shù)目減少一半缩举。
更安全
Obj-C:潛在的nil危險
Swift:出現(xiàn)“?”來提醒潛在的nil對象
函數(shù)式編程
例子:
有兩個數(shù)組(如下圖)仅孩,根據(jù)數(shù)組indexes里的元素作為索引從numbers中取出數(shù)字并拼接成一個字符串
Obj-C:命令式編程,可以思路很清晰地寫出如下代碼
雖然代碼可以work印蓖,但是未免太長辽慕,也不具有函數(shù)性,整個代碼段包含太多命令和狀態(tài)的改變赦肃。
我們可以使用更加函數(shù)式的代碼寫出來溅蛉。
Swift:
還可以讓代碼變的更少:
更更少:
這就是函數(shù)式編程的魅力所在,不需要任何新的中間變量他宛,和狀態(tài)的改變船侧,通過一行代碼就可以達到九行代碼的效果。
這也展現(xiàn)出函數(shù)式編程的核心 —— 比如使用map厅各、reduce來代替for循環(huán)镜撩。
所以還沒有接觸過Swift的iOS開發(fā)者們可以將Swift學起來啦~保證不后悔 ?(?)?