Swift語法 Swift5 【01 - 基礎語法】


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

iOS Swift 語法 底層原理內存管理分析 專題:【iOS Swift5語法】

00 - 匯編
01 - 基礎語法
02 - 流程控制
03 - 函數
04 - 枚舉
05 - 可選項
06 - 結構體和類
07 - 閉包
08 - 屬性
09 - 方法
10 - 下標
11 - 繼承
12 - 初始化器init
13 - 可選項


目錄

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

00-Playground

Playground是 Apple 在 2014 年 WWDC 發布 Swift 的時候,和 Xcode 一起發布的用于實時調試 Swift 代碼的小工具。
本專題中【iOS Swift5語法】的大部分代碼都通過 Playground 來演示,它可以實時的為我們編譯代碼,并自動的顯示每一行代碼的結果,他能演示很多代碼場景。Playground是我們學習 Swift 一個必不可少的的利器。
【iOS Swift5語法】 專題使用的Xcode版本已更新至Xcode最新版本Xcode 11.4.1


01-Playground簡單使用


  • Playground快捷鍵

    • 顯示側邊欄: Command + 1
    • 隱藏側邊欄: Command + 0
    • Playground可以快速預覽代碼效果,是學習語法的好幫手
    • Command + Shift + Enter :運行整個Playground
    • Shift + Enter :運行截止到某一行代碼
  • 新建Playground
    運行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函數, Swift將全局范圍內的首句可執行代碼作為程序入口
  • 一句代碼尾部可以省略分號(;) ,多句代碼寫到同一行時必須用分號(;)隔開
  • var定義變量,let定義常量,編譯器能自動推斷出變量\常量的類型
print("Hello World!")
let a = 10
let b = 20
var c = a + b
c += 30

02-UIView

  • 使用UIKit框架需要導入UIKit框架, import UIKit

  • PlaygroundSupport框架支持實時預覽UI效果,需要實時預覽UI效果需導入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

  • 導入圖片資源文件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設置為vc就可以了
PlaygroundPage.current.liveView = vc
image.png

05-注釋

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

06-Markup

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

/*:
 開始markup
 */

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

07-常量

常量即在初始化賦值之后,就不允許在進行賦值

let age1 = 10
//age1 = 22       // 報錯: 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
  • 聲明常量后再單獨賦值,必須指定類型
let age
age = 20    // error: found an unexpected second identifier in constant declaration; is there an accidental break?

08-標識符

  • 標識符(比如 常量名、變量名、函數名)幾乎可以使用任何字符
  • 標識符不能以數字開頭, 不能包含空白字符、制表符、箭頭特殊字符
func ????() {
    print("666")
}
????()

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

09-常見數據類型

常用數據類型分為兩大類: 值類型引用類型

  • 值類型

    • 枚舉(enum)
      • Optional
    • 結構體(struct)
      • Bool、Int、Float、Double、Character
      • String、Array、Dictionary、Set
  • 引用類型(reference type)

    • 類(class)

  • 整數類型: Int8、Int16、 Int32、 Int64、 UInt8、 UInt16、 UInt32、 UInt64
  • 32bit平臺, Int等價于Int32 ;在64bit平臺,Int等價于Int64
  • 整數的最值表示方式: UInt8. max、Int16.min
  • 一般情況下,都是直接使用Int即可
  • 浮點類型:Float , 32位,精度只有6位, Double , 64位,精度至少15位

10-字面量

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

100_0000、1_000_000.000_000_1、000123.456

// 浮點數
let doubleDecimal = 125.0   // 十進制,等價于1.25e2, 0.0125等價于1.25e-2
let doubleHexadecimal1 = 0xFp2  // 十六進制,意味著15x2^2, 相當于十進制60.0
let doubleHexadecimal2 = 0xFp-2 // 十六進制, 意味著15x2^-2, 相當于十進制的3.75
/* 以下都是表示12.1875
 十進制: 12.1875、1.21875e1
 十六進制: 0xC.3p0
 */

// 數組
let array = [1, 3, 5, 7, 9]
// 字典
// value值有整型,字符串類型,需指定類型為[String : Any], 否則報錯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-類型轉換

注意: Swift不支持不同類型的值進行運算

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

// 整數、浮點數轉換
let int = 3
let double = 0.14159
let pi = Double(int) + double
let intPi = Int(pi)

// 字面量可以直接相加,因為數字字面量本身沒有明確的類型
let result = 3 + 0.14159

12-元組(Tuple)

元組(Tuple)可以把多個值組合成一個復合值。元組內的值可以是任意類型,且不要求是相同類型。

  • 不想接收值,直接用下劃線_
  • 可以使用標簽方式
// 元組
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)")

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

iOS Swift 語法 底層原理內存管理分析 專題:【iOS Swift5語法】

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


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。