從Pitre《Swift 基礎教程2nd》開始

来源:http://www.cnblogs.com/wencairen/archive/2017/05/06/6817074.html
-Advertisement-
Play Games

看了兩天《Learn Objective-C on the MAC》 中文版本《Objective-C基礎編程》,大概認真讀到了第9章記憶體管理部分,感覺這語言可比C++簡單多了。 第一天,因為有C語言基礎的緣故,我在windows 上安裝了GNUstep (Objective-C)開發環境,變看電子 ...


     看了兩天《Learn Objective-C on the MAC》 中文版本《Objective-C基礎編程》,大概認真讀到了第9章記憶體管理部分,感覺這語言可比C++簡單多了。

      第一天,因為有C語言基礎的緣故,我在windows 上安裝了GNUstep (Objective-C)開發環境,變看電子書籍,邊在PC上編譯運行樹上的示例,幾乎一個都沒放過,還做了不少筆記。 (畢竟作者 Mark Dalrymaple & Scott Knaster 是高屋建瓴,敘述技術娓娓道來,將其實很深的技術要點深入淺出地講出,言簡意賅,還將Objc與C語言做對比來說明,印象深刻)。不知不覺就在第一天看完了前8章。

 但是從第9章開始記憶體管理部分,可沒有那麼好啃了。

“......我們常常講這些規則複雜化,同樣,忽略這些規則也是一種常犯的錯誤。如果你正在漫無目的地濫用retain 和release 方法1⃣️修正這些錯誤,那就說明你還沒有真正掌握這些規則。你需要放慢速度,休息一下,然後再繼續閱讀......“ 在《Objective-C基礎編程》中,作者如是說。

看說的多好,欲速則不達。

同時,我在臨睡前也翻翻知乎的帖子,查看一下前輩的學習建議和曲線。

個人總結如下:

  1. 如果確定要長期在MAC/IOS下開發,Objective-C & swift 都要學,有了Objc 基礎的人千萬不要輕視對swift的學習,當然學習C/C++的對Objc/swift 不屑的早晚有後悔的一天。 畢竟語言只是個工具,如果非常熟悉某種語言的話,其實學習objc/swift 的代價會非常小。
  2. 個人在前兩天決心入手MAC book前涉獵了一下app store 上的調查,總結出的結論是: 技術在MAC/IOS上不是瓶頸,難得的是想法和創意。所以在確定要開發項目前,先做一些調查,有利可圖再繼續做下去,不要埋首到技術鑽研和無窮盡的編碼中,那樣太沒有趣味了。

看了《Objective-C基礎編程》初步對Objc 有了個初步的瞭解, (條條框框比C++多,但是要比C 多了不少,掌握起來其實有很大難度的)。

但是swift 倒是一門易學易用的語言,在圖書館借到了 Pitre 的《swift 基礎教程2nd》,粗略翻了一下,這門語言可跟javascipt 很像呀。 

好了,開始上路。

  • Swift 2 是Apple 從頭打造的現代語言,功能強大且易於學習。Apple公司已將其作為日益增長的iOS/watchOS/tvOS/Mac OS X 應用程式的開發語言
  • Xcode  目前最新的Xcode 最新版本是Xcode8.3
  • LLVM 在xcode 中,LLVM在幕後工作,這種編譯器技術讓Swift 語言變得優雅,並將Swift 代碼轉換為Apple設備處理器能夠運行的機器嗎
  • REPL (Read-Eval-Print-Loop)是一個命令行工具,可用於快速嘗試Swift 代碼。在MAC OS X中,可在terminal 中運行它
  • playground 在Xcode中,提供了交互性和實時的結果,非常適合用來學習Swift

邊看書邊實踐邊寫隨筆:

Chapter 1 Swift 簡介

1. 在Terminal 中輸入xcrun swift 可進入REPL,進行swift代碼測試

2. 使用var 定義變數,使用let 定義常量

3. swift 基本類型:

Bool, Int ,Int32,Int64,Int8,Int16, UInt,UInt32,UInt64,UInt8,UInt16,Float,Double,Character,String

4.  數學運演算法  加 (+),減 (-),乘 (*),除 (/),各種語言在這點都是一個德性。

5. 數值表示法, 二進位,八進位,16進位,科學計數法,與C同

6. 輕鬆顯示字元串

 使用嵌入表示法\() 來引用變數/常量,如

let  n=10
let  name= “Tom”
let  city=“Shanghai”
print (“I am \(name), from \(city), age=\(n)")

 7. 使用typealias 定義別名,與C中的typedef 同,如

typealias EightBits=UInt8
var reg:EightBits=0

 8.元祖 (Tuple) 元祖是由一個或多個變數/常量/字面量組成的單個實體,如

let myDreamCar=(2017,"Mercedes-Benz","M-Class")
print (myDreamCar.0)
print (myDreamCar.1)
print (myDreamCar.2)

 9. 可選類型, (現在還不明白這個用處是?)

var v: Int?

 Chapter2  集合

1. 數組

let candyJar=["Peppermints", "Gooey Bears","Happy Ranchers"]
print (candyJar[0])
candyJar.append("Candy Canes") //!!! error ,the array is constant

var refillableCandyJar =candyJar //將常量數組賦給變數數組
refillableCandyJar.append("Candy Canes")
refillableCandyJar+=[Peanut Clusgters"];
refillableCandyJar+=["Banna Taffy","Bubble Gum"]

var h20:[String]=["Hydogen","Hydrogen","Oxygen"]; //如果要在聲明數組時指定其值的類型

 與C同,數組中包含的元素類型必須相同。

用var 定義的是可變的數組,使用let定義的是常量數組。

swift語言中的數組可以類比為C中的向量 vector。

swift中數組可以修改/替換(指定數組索引並賦給它新值即可),刪除(removeAtIndex/removeLast),插入(insert:atIndex),合併(+)

  • 字典

字典包括兩個不同的部分:鍵 (key)和 值 (value),鍵和值的類型可以不同,但所有鍵的類型都必須相同,所有值的類型也必須相同。

va r dict =["one":1, "two":2,"three":3,"four":4]
print (dict["one"])  //find

dict["five"]=5 //add

dict["one"]=11 //update

dict["one"]=nil //delete

dict.removeValueForKey("two") //delete
  • 數組的數組

//Todo

//add some codes

  • 創建空數組和詞典
var myEmptyArray:Array<Int>=[]
//or
var myEmptyArray=[Int]()
myEmptyArray+=[33,44,66]
myEmptyArray=[]  //delete all items

var myEmptyDictionary =Dictionary<String,Double> ()
myEmptyDictionary =["myKey",12.34]
  •  數組迭代
//method 1
for itemName in list {
... do something with itemName
}

//method 2
//迭代數組的值及其索引
for (index, candy) in combinedRefillableCandyJar.enumerate () {
  print ("Candy \(candy) is in position \(index) of the array")
}

 

  • 迭代詞典
for (index, value ) in arceneauxsOtherCandyRoute {
 print ("\(key) has a candy jar with the following contents:\(value)")
}

 swift 基本數據類型學習&介紹完畢

<Chapter 2 end >

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 01 複雜度1:最大子列和問題 Description: 給定K個整數組成的序列{N​1​​, N2, ..., N​k​​},“連續子列”被定義為{N​i, N​i+1​​, ..., N​j},其中1≤i≤j≤K。“最大子列和”則被定義為所有連續子列元素的和中最大者。例如給定序列{ 2, 11, ...
  • 留言板管理系統 我的完成效果圖: 提交後: 我的留言板基本架構如圖: 創建留言板資料庫: 剛開始我的前臺主頁中寫留言信息表單: 開始建立後臺Java類中層次我先在我的實體層里寫了一個實體類實現增加的實體類如圖: 寫我Dao層里的BaseDao工具類 在Dao層里寫一個實現類: 在我的實現包里寫一個實 ...
  • 流程式控制制 1 在特定的範圍內計數迴圈,結構為 關鍵字in 的後面依次為起始數字,三個句點和結束數字,示例: 2 變種語法 3 老式for迴圈 開始使用playground 流程式控制制就是決策 swift 比較運算符 switch case default 類似C,但是不限於整形數字和enum,還可以用 ...
  • MySql中可視化界面如何進行自增設置? 數據類型為Int型時,可自動出現自增選項 ${pageContext.request.contextPath }是什麼? 參考:http://jzgl-javaeye.iteye.com/blog/658446 在類似下圖中使用此jsp取得絕對路徑可以避免t ...
  • 1.編寫一個程式。該程式讀取輸入直到遇到#字元,然後報告讀取的空格數目、讀取的換行符數目以及讀取的所有其他字元數目。 2.編寫一個程式。該程式讀取輸入直到遇到#字元。使程式列印每個輸入的字元以及它的十進位ASCII 碼。每行列印8 個字元/編碼對。建議:利用字元計數和模運算符(%)在每8 個迴圈周期 ...
  • C language 學習心得 附:為啥起這麼霸氣側漏,招大神們鄙視的標題,正如我在《C language》隨筆的介紹中寫的,這是一個寫個妹紙們看的C language的文章。沒錯!!寫這篇文章的靈感也來自於上周Clanguage課上偶撩到一個連書包都不放下在玩手機的妹子(普通聊天而已,噓~~~), ...
  • SpringBoot的幾個使用技巧 首先提供幾個SpringBoot開發過程中常用的網站: 1. Spring Boot官方文檔:http://docs.spring.io/spring boot/docs 2. SpringBoot項目初始化網站:https://start.spring.io/ ...
  • 1、java程式的基本結構大體上可以分為包、類、main()主方法、標識符、關鍵字、語句和註釋等。 2、標識符和關鍵字區分大小寫。 3、主方法是應用程式的入口點,java程式是從該方法開始執行的,main是主方法的名稱,程式員不可以更改。 4、標識符 是一個名字,用來標識類名、變數名、方法名、數組名 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...