Swift Basic

Swift 是 iOS 和 OS X 應(yīng)用開(kāi)發(fā)的一門新語(yǔ)言,是在 C 和 Objective-C 的基礎(chǔ)上提出的。

學(xué)習(xí)Swift之前,它的一些必備學(xué)習(xí)資料還是有的

  • Awesome-Swift-Education
    集合了大部分的swift的學(xué)習(xí)資料,非常齊全,就是沒(méi)時(shí)間看,極力推薦。
  • Swift Guide
    這份指南匯集了Swift語(yǔ)言主流學(xué)習(xí)資源,并以開(kāi)發(fā)者的視角整理編排。

上面兩份中有重復(fù)的,但是確實(shí)可以。

當(dāng)然分細(xì)一點(diǎn)

基礎(chǔ)部分

變量和常量
//簡(jiǎn)單舉例
var oneString = "oneTest"  // 變量
let nowTimes = 0   // 常量
print(oneString,nowTimes)

但是像這樣定義之后,一般會(huì)有警告 oneString 提示沒(méi)有使用建議轉(zhuǎn)換成 let 類型,說(shuō)明var 是需要變化的。

類型標(biāo)注
 var oneString :String // 變量
 // === NSString * oneString
 oneString = "twoTest"
類型推斷

Swift 是一個(gè)類型安全(type safe)的語(yǔ)言。類型安全的語(yǔ)言可以讓你清楚地知道代碼要處理的值的類型。如果你的代碼需要一個(gè)String,你絕對(duì)不可能不小心傳進(jìn)去一個(gè)Int。
由于 Swift 是類型安全的,所以它會(huì)在編譯你的代碼時(shí)進(jìn)行類型檢查(type checks),并把不匹配的類型標(biāo)記為錯(cuò)誤。這可以讓你在開(kāi)發(fā)的時(shí)候盡早發(fā)現(xiàn)并修復(fù)錯(cuò)誤.

 let pi = 3.14159
// pi 會(huì)被推測(cè)為 Double 類型
  let meaningOfBasketball = 23
// meaningOfLife 會(huì)被推測(cè)為 Int 類型
nil 和 可選

nil 可以給可選變量賦值為nil來(lái)表示它沒(méi)有值:

var serverResponseCode: Int? = 404
// serverResponseCode 包含一個(gè)可選的 Int 值 404
serverResponseCode = nil
// serverResponseCode 現(xiàn)在不包含值
var surveyAnswer: String?
// surveyAnswer 被自動(dòng)設(shè)置為 nil

注意

使用!來(lái)獲取一個(gè)不存在的可選值會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。
使用!來(lái)強(qiáng)制解析值之前,一定要確定可選包含一個(gè)非nil的值。

可選類型暗示了常量或者變量可以“沒(méi)有值”??蛇x可以通過(guò)if語(yǔ)句來(lái)判斷是否有值,如果有值的話可以通過(guò)可選綁定來(lái)解析值。
有時(shí)候在程序架構(gòu)中,第一次被賦值之后,可以確定一個(gè)可選類型總會(huì)有值。在這種情況下,每次都要判斷和解析可選值是非常低效的,因?yàn)榭梢源_定它總會(huì)有值。這種類型的可選狀態(tài)被定義為隱式解析可選類型(implicitly unwrapped optionals)。把想要用作可選的類型的后面的問(wèn)號(hào)(String?)改成感嘆號(hào)(String!)來(lái)聲明一個(gè)隱式解析可選類型。

總結(jié)

發(fā)現(xiàn)基礎(chǔ)這塊是最難總結(jié)和概括的,需要后續(xù)項(xiàng)目經(jīng)驗(yàn)的加深才能有更系統(tǒng)的理解,暫時(shí)只能大致記錄,后面陸續(xù)增加中~~~

問(wèn)題一、打印,只用Print,如何區(qū)分不同類型的?
print(_:separator:terminator:)

NSLog(@""); println(),都不用了,只用print

print("one====\(oneString)")
//日志打印 one====twoTest

但是打印浮點(diǎn)數(shù)的時(shí)候,我們需要

 let a = 0.12122
 let format = String(format:"%.2f",a)
 print("double==:\(format)" )
 // double==:0.12

此時(shí)我們最好為Double 寫一個(gè)擴(kuò)展

extension Double { 
      func format(f: String) -> String {   
                return String(format: "%\(f)f", self) 
           }
      }

let format0 = ".2"
print("double:\(a.format(format0))") // 這樣就可以達(dá)到同樣的效果啦 // double:0.12

備注:Double和Float的區(qū)別

  • Double表示64位浮點(diǎn)數(shù)。當(dāng)你需要存儲(chǔ)很大或者很高精度的浮點(diǎn)數(shù)時(shí)請(qǐng)使用此類型。
  • Float表示32位浮點(diǎn)數(shù)。精度要求不高的話可以使用此類型。

Double精確度很高,至少有15位數(shù)字,而Float最少只有6位數(shù)字。選擇哪個(gè)類型取決于你的代碼需要處理的值的范圍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift 是一門開(kāi)發(fā) iOS, macOS, watchOS 和 tvOS 應(yīng)用的新語(yǔ)言。然而,如果你有 C 或...
    XLsn0w閱讀 990評(píng)論 2 1
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,200評(píng)論 1 10
  • 常量和變量 常量和變量把一個(gè)名字(比如maximumNumberOfLoginAttempts或者welcomeM...
    窮人家的孩紙閱讀 2,590評(píng)論 0 3
  • 2017.5.14 星期日 累計(jì)99 一、本期目標(biāo)實(shí)現(xiàn)財(cái)富收入50萬(wàn)(7月底) 二、今天具體播種 1.晨起在微信上...
    鵲曾閱讀 100評(píng)論 0 1
  • 要想成為某個(gè)領(lǐng)域的優(yōu)秀人物,少不了刻意練習(xí)。 也許我們看了很多關(guān)于這方面的書(shū),聽(tīng)了很多相關(guān)的課程,但輸出卻總是遇到...
    我若盛開(kāi)清風(fēng)自來(lái)閱讀 228評(píng)論 2 1

友情鏈接更多精彩內(nèi)容