Swift語法 Swift5 【01 - 基礎(chǔ)語法】


  • 作者: Liwx
  • 郵箱: 1032282633@qq.com
  • 源碼: 需要源碼的同學(xué), 可以在評論區(qū)留下您的郵箱

iOS Swift 語法 底層原理內(nèi)存管理分析 專題:【iOS Swift5語法】

00 - 匯編
01 - 基礎(chǔ)語法
02 - 流程控制
03 - 函數(shù)
04 - 枚舉
05 - 可選項(xiàng)
06 - 結(jié)構(gòu)體和類
07 - 閉包
08 - 屬性
09 - 方法
10 - 下標(biāo)
11 - 繼承
12 - 初始化器init
13 - 可選項(xiàng)


目錄

  • 00-Playground
    • 01-Playground簡單使用
    • 02-新建子Playground Page
  • 01-HelloWorld
  • 02-UIView
  • 03-UIImageView
  • 04-UITableViewController
  • 05-注釋
  • 06-Markup
  • 07-常量
  • 08-標(biāo)識(shí)符
  • 09-常見數(shù)據(jù)類型
  • 10-字面量
  • 11-類型轉(zhuǎn)換
  • 12-元組(Tuple)

00-Playground

Playground是 Apple 在 2014 年 WWDC 發(fā)布 Swift 的時(shí)候嗤形,和 Xcode 一起發(fā)布的用于實(shí)時(shí)調(diào)試 Swift 代碼的小工具湿镀。
本專題中【iOS Swift5語法】的大部分代碼都通過 Playground 來演示蜻牢,它可以實(shí)時(shí)的為我們編譯代碼,并自動(dòng)的顯示每一行代碼的結(jié)果竟秫,他能演示很多代碼場景。Playground是我們學(xué)習(xí) Swift 一個(gè)必不可少的的利器。
【iOS Swift5語法】 專題使用的Xcode版本已更新至Xcode最新版本Xcode 11.4.1航揉。


01-Playground簡單使用


  • Playground快捷鍵

    • 顯示側(cè)邊欄: Command + 1
    • 隱藏側(cè)邊欄: Command + 0
    • Playground可以快速預(yù)覽代碼效果,是學(xué)習(xí)語法的好幫手
    • Command + Shift + Enter :運(yùn)行整個(gè)Playground
    • Shift + Enter :運(yùn)行截止到某一行代碼
  • 新建Playground
    運(yùn)行Xcode驶乾, 選中頂部菜單File -> New -> Playground ...

image.png
image.png
image.png
image.png

02-新建子Playground Page

  • 新建子Playground Page

    • 選中PlaygroundTest,右鍵選擇New Playground Page

      image.png

    • 重命名子Playground Page為01-HelloWorld

image.png

  • Playground文件目錄說明
image.png

01-HelloWorld

  • 不用編寫main函數(shù), Swift將全局范圍內(nèi)的首句可執(zhí)行代碼作為程序入口
  • 一句代碼尾部可以省略分號(hào)(;) ,多句代碼寫到同一行時(shí)必須用分號(hào)(;)隔開
  • var定義變量邑飒,let定義常量,編譯器能自動(dòng)推斷出變量\常量的類型
print("Hello World!")
let a = 10
let b = 20
var c = a + b
c += 30

02-UIView

  • 使用UIKit框架需要導(dǎo)入UIKit框架, import UIKit

  • PlaygroundSupport框架支持實(shí)時(shí)預(yù)覽UI效果轻掩,需要實(shí)時(shí)預(yù)覽UI效果需導(dǎo)入PlaygroundSupport框架幸乒,import PlaygroundSupport

import UIKit
import PlaygroundSupport

let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
view.backgroundColor = .blue
PlaygroundPage.current.liveView = view
image.png

03-UIImageView

  • 導(dǎo)入圖片資源文件Logo.png

拖拽圖片文件到Resources文件夾下

image.png

import UIKit
import PlaygroundSupport

let imageView = UIImageView(image: UIImage(named: "Logo"))
PlaygroundPage.current.liveView = imageView
image.png

04-UITableViewController

import UIKit
import PlaygroundSupport

let vc = UITableViewController()
vc.view.backgroundColor = .lightGray
// TODO: live設(shè)置為vc就可以了
PlaygroundPage.current.liveView = vc
image.png

05-注釋

  • 單行注釋
// 單行注釋
  • 多行注釋
/*
 多行注釋
 */
  • 多行注釋嵌套
/*
 1
 /* 多行注釋的嵌套 */
 2
 */

06-Markup

  • Playground的注釋支持markup語法(與markdown相似)
  • 開啟markup渲染效果: Editor -> Show Rendered Markup
  • 關(guān)閉markup渲染效果: Editor -> Show Raw Markup
  • 注意: Markup只在Playground中有效
//: 開始markup

/*:
 開始markup
 */

/*:
 # 一級(jí)標(biāo)題
 
 ## 無序列表
 - First Item
 - Second Item
 
 ## 有序列表
 1. First Item
 2. Second Item
 
 ## 筆記
 > This is a note.
 ---
 
 ## 圖片
 ![Logo](Logo.png "Local image")
 
 ## 鏈接
 * [博客](http://www.reibang.com/u/bfcdf4a76abf)
 
 ## 粗體/斜體
 這是**Bold**, 這是*Italic*
 
 */
image.png
image.png

07-常量

常量即在初始化賦值之后,就不允許在進(jìn)行賦值

let age1 = 10
//age1 = 22       // 報(bào)錯(cuò): Cannot assign to value: 'age1' is a 'let' constant

let age2: Int
age2 = 20

func getAge() -> Int {
    return 30
}
let age3 = getAge()
  • 常量唇牧、變量在未初始化之前不能使用
let age: Int
var height: Int
print(age)      // error: constant 'age' used before being initialized
print(height)   // error: variable 'height' used before being initialized
  • 聲明常量后再單獨(dú)賦值,必須指定類型
let age
age = 20    // error: found an unexpected second identifier in constant declaration; is there an accidental break?

08-標(biāo)識(shí)符

  • 標(biāo)識(shí)符(比如 常量名罕扎、變量名、函數(shù)名)幾乎可以使用任何字符
  • 標(biāo)識(shí)符不能以數(shù)字開頭, 不能包含空白字符丐重、制表符腔召、箭頭特殊字符
func ????() {
    print("666")
}
????()

let ?? = "ET"
var ?? = "milk"

09-常見數(shù)據(jù)類型

常用數(shù)據(jù)類型分為兩大類: 值類型引用類型

  • 值類型

    • 枚舉(enum)
      • Optional
    • 結(jié)構(gòu)體(struct)
      • Bool、Int扮惦、Float臀蛛、Double、Character
      • String崖蜜、Array浊仆、Dictionary、Set
  • 引用類型(reference type)

    • 類(class)

  • 整數(shù)類型: Int8豫领、Int16抡柿、 Int32、 Int64等恐、 UInt8洲劣、 UInt16备蚓、 UInt32、 UInt64
  • 32bit平臺(tái), Int等價(jià)于Int32 ;在64bit平臺(tái)囱稽,Int等價(jià)于Int64
  • 整數(shù)的最值表示方式: UInt8. max郊尝、Int16.min
  • 一般情況下,都是直接使用Int即可
  • 浮點(diǎn)類型:Float , 32位,精度只有6位, Double , 64位,精度至少15位

10-字面量

// 布爾
let bool = true             // 取反是false
// 字符串
let string = "哈哈哈"
// 字符(可存儲(chǔ)ASCII字符、Unicode字符)
let character: Character = "??"
// 整數(shù)
let intDecimal = 17         // 十進(jìn)制
let intBinary = 0b10001     // 二進(jìn)制
let intOctal = 0o21         // 八進(jìn)制
let intHexadecimal = 0x11   // 十六進(jìn)制
  • 整數(shù)和浮點(diǎn)數(shù)可以添加額外的零或者添加下劃線來增強(qiáng)可讀性

100_0000战惊、1_000_000.000_000_1流昏、000123.456

// 浮點(diǎn)數(shù)
let doubleDecimal = 125.0   // 十進(jìn)制,等價(jià)于1.25e2, 0.0125等價(jià)于1.25e-2
let doubleHexadecimal1 = 0xFp2  // 十六進(jìn)制,意味著15x2^2, 相當(dāng)于十進(jìn)制60.0
let doubleHexadecimal2 = 0xFp-2 // 十六進(jìn)制, 意味著15x2^-2, 相當(dāng)于十進(jìn)制的3.75
/* 以下都是表示12.1875
 十進(jìn)制: 12.1875、1.21875e1
 十六進(jìn)制: 0xC.3p0
 */

// 數(shù)組
let array = [1, 3, 5, 7, 9]
// 字典
// value值有整型,字符串類型,需指定類型為[String : Any], 否則報(bào)錯(cuò)Heterogeneous collection literal could only be inferred to '[String : Any]'; add explicit type annotation if this is intentional
let dictionary: [String : Any] = ["age" : 18, "height" : 168, "weight": 120, "name" : "Liwx"]

11-類型轉(zhuǎn)換

注意: Swift不支持不同類型的值進(jìn)行運(yùn)算

// 整數(shù)類型
let int1: UInt16 = 2_000
let int2: UInt8 = 1
let int3 = int1 + UInt16(int2)

// 整數(shù)样傍、浮點(diǎn)數(shù)轉(zhuǎn)換
let int = 3
let double = 0.14159
let pi = Double(int) + double
let intPi = Int(pi)

// 字面量可以直接相加,因?yàn)閿?shù)字字面量本身沒有明確的類型
let result = 3 + 0.14159

12-元組(Tuple)

元組(Tuple)可以把多個(gè)值組合成一個(gè)復(fù)合值横缔。元組內(nèi)的值可以是任意類型,且不要求是相同類型衫哥。

  • 不想接收值,直接用下劃線_
  • 可以使用標(biāo)簽方式
// 元組
let http404Error = (404, "Not Found")
print("The status code is \(http404Error.0), status message is \(http404Error.1)")

let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode), status message is \(statusMessage)")

// 不想接收值,直接用下劃線_
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")

// 使用標(biāo)簽方式
let http200Status = (statusCode: 200, description: "OK")
print("The status code is \(http200Status.statusCode), description is \(http200Status.description)")

iOS Swift 語法 底層原理內(nèi)存管理分析 專題:【iOS Swift5語法】

下一篇: 02 - 流程控制
上一篇: 00 - 匯編


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載茎刚,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末撤逢,一起剝皮案震驚了整個(gè)濱河市膛锭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚊荣,老刑警劉巖初狰,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異互例,居然都是意外死亡奢入,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門媳叨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腥光,“玉大人,你說我怎么就攤上這事糊秆∥涓#” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵痘番,是天一觀的道長捉片。 經(jīng)常有香客問我,道長汞舱,這世上最難降的妖魔是什么伍纫? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮昂芜,結(jié)果婚禮上翻斟,老公的妹妹穿的比我還像新娘。我一直安慰自己说铃,他們只是感情好访惜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腻扇,像睡著了一般债热。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上幼苛,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天窒篱,我揣著相機(jī)與錄音,去河邊找鬼舶沿。 笑死墙杯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的括荡。 我是一名探鬼主播高镐,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畸冲!你這毒婦竟也來了嫉髓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邑闲,失蹤者是張志新(化名)和其女友劉穎算行,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苫耸,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡州邢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褪子。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片量淌。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖褐筛,靈堂內(nèi)的尸體忽然破棺而出类少,到底是詐尸還是另有隱情,我是刑警寧澤渔扎,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布硫狞,位于F島的核電站,受9級(jí)特大地震影響晃痴,放射性物質(zhì)發(fā)生泄漏残吩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一倘核、第九天 我趴在偏房一處隱蔽的房頂上張望泣侮。 院中可真熱鬧,春花似錦紧唱、人聲如沸活尊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹锰。三九已至深胳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铜犬,已是汗流浹背舞终。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留癣猾,地道東北人敛劝。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像纷宇,于是被迫代替她去往敵國和親夸盟。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355