從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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...