Swift编程Swift3.0Swift5.0

Swift语法 Swift5 【01 - 基础语法】

2020-05-08  本文已影响0人  Liwx

iOS Swift 语法 底层原理内存管理分析 专题:【iOS Swift5语法】

00 - 汇编
01 - 基础语法
02 - 流程控制
03 - 函数
04 - 枚举
05 - 可选项
06 - 结构体和类
07 - 闭包
08 - 属性
09 - 方法
10 - 下标
11 - 继承


目录


00-Playground

Playground是 Apple 在 2014 年 WWDC 发布 Swift 的时候,和 Xcode 一起发布的用于实时调试 Swift 代码的小工具。
本专题中【iOS Swift5语法】的大部分代码都通过 Playground 来演示,它可以实时的为我们编译代码,并自动的显示每一行代码的结果,他能演示很多代码场景。Playground是我们学习 Swift 一个必不可少的的利器。
【iOS Swift5语法】 专题使用的Xcode版本已更新至Xcode最新版本Xcode 11.4.1


01-Playground简单使用


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

02-新建子Playground Page

image.png
image.png

01-HelloWorld

print("Hello World!")
let a = 10
let b = 20
var c = a + b
c += 30

02-UIView

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

拖拽图片文件到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

//: 开始markup

/*:
 开始markup
 */

/*:
 # 一级标题
 
 ## 无序列表
 - First Item
 - Second Item
 
 ## 有序列表
 1. First Item
 2. Second Item
 
 ## 笔记
 > This is a note.
 ---
 
 ## 图片
 ![Logo](Logo.png "Local image")
 
 ## 链接
 * [博客](https://www.jianshu.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-常见数据类型

常用数据类型分为两大类: 值类型引用类型



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 - 汇编


上一篇 下一篇

猜你喜欢

热点阅读