swift结算系统想踢就踢嘛(三十分钟快速了解)

本文主要用于需要快速了解 Swift 的基础知识包含五大块:,我来为大家科普一下关于swift结算系统想踢就踢嘛?以下内容希望对你有帮助!

swift结算系统想踢就踢嘛(三十分钟快速了解)

swift结算系统想踢就踢嘛

本文主要用于需要快速了解 Swift 的基础知识。包含五大块:

  • 变量常量
  • if、for、while
  • 函数
  • 集合
  • struct 与 class

推荐大家用 Xcode 的 Playground 来了解、练习 Swift 的基础知识。

本文内容基于 Swift 5.3.

变量常量

在 Swift 中,通过 let 来声明常量,var 来声明变量。

let

用 let 修饰的常量赋值后不可修改。

let name = "Swift" // 这句代码会报错:Cannot assign to value: 'name' is a 'let' constant name = "Objective-C"

var

用 var 修饰的变量在赋值后仍可以修改它的值。

var age = 2012 age = 2011

Tips: Swift 是可以自动进行类型推断的,Compiler 会根据你的赋值自动推断其类型。所以在声明常量或变量的时候可以不写其类型。

比如下面的代码是等效的:

var age = 2012 var age: Int = 2012

如何选择使用

• 如果代码中存储的值不需要改变,则使用 let。

• 如果代码中存储的值需要改变,则只用 var。

• 如果代码中存储的值不确定是否需要改变,优先使用 let,后续变更可再改为 var。因为这样能更好的保持代码的健壮性。

if、for、whileif

if 后的判断条件不需要写小括号。

let age = 18 if age < 18 { print("Denied") } else { print("Allow") }

for

在 Swift 中,弃用了 for(int i = 0; i <= 10, i ) 这种方式,而是采取了更加简洁的 for-in 。

// 0...10 等价于 [0...10] for i in 0...10 { print(i) } // 0...10 等价于 [0...10) for i in 0..<10 { print(i) }

while

var count = 10 while count > 0 { print(count) count -= 1 }

需要特别指出的是:Swift 不支持 count-- 或 --count 这种语法,因为这种代码比较容易出错,且不易于阅读。

函数

通过 func 关键字来声明函数。

// 无参无返回值 func doSomething() { } // 有参无返回值 func doSomething(parameter: Int) { } // 多个参无返回值。parameter1 、parameter2 只为示意,真实项目中的代码不要这样命名。 func doSomething(parameter1: Int, parameter2: Int) -> Int { return 0 } // 有参有返回值 func doSomething(parameter: Int) -> Int { return 0 }

  • 函数中的参数默认是 let 修饰,即不可修改的。如果想修改需添加 inout 关键字。

func doSomething(parameter: inout Int) { }

  • 可以在参数前面添加 _,从而在调用时忽略参数名。

func doSomething(parameter: Int) { } doSomething(parameter: 10) func doSomething1(_ parameter: Int) { } doSomething1(10)

  • 参数设置默认值。

func doSomething(parameter: Int = 1024) { } // parameter 默认值为 1024 doSomething()

集合Array

Array:用来存储一组同类型、有序的数据。

// 声明 var nums = [1, 2, 3, 4] // 尾部添加 nums.append(5) // 1 2 3 4 5 // 移除第一个元素 nums.remove(at: 0) // 2 3 4 5 // 移除尾部元素 nums.removeLast() // 2 3 4 // 移除首部元素 nums.removeFirst() // 3 4 // 在 index 为 2 的位置插入 10 nums.insert(10, at: 2) // 3 4 10 // 删除全部元素 nums.removeAll() // []

  • 不要对空数组调用 removeLast/removeFirst 函数。
  • remove/insert 函数的索引应是有效的。
Dictionary

Dictionary:用来存储键值对,它的 key 是唯一的,且数据是无序的。

// 声明 var goods = ["name": "appale", "price": "20"] // 添加键值对 goods["weight"] = "10.0" // ["name": "appale", "weight": "10.0", "price": "20"] // 修改 goods["name"] = "orange" // ["price": "20", "name": "orange", "weight": "10.0"] // 获取所有的 key goods.keys //["name", "price", "weight"] // 移除某个键值对 goods["name"] = nil // ["price": "20", "weight": "10.0"] // 移除所有元素 goods.removeAll()

Set

Set:用来存储一组同类型、无序、值唯一的数据。

// 声明 var set = Set<Int>() // 添加元素 set.insert(10) // [10] set.insert(20) // [20, 10] // 因为 set 值唯一,所以还是 [20, 10] set.insert(10) // [20, 10] // 移除头部元素 set.removeFirst() // [10] 或者 [20] // 移除所有元素 set.removeAll()

  • removeFirst:因为 Set 是无序的,所以它移除的并不一定是最先添加进去的元素。并且不要对空的 set 调用该函数。
struct 与 classstruct

用 struct 关键字修饰,可以声明属性和函数。

// 定义 struct Person { let name: String let age: Int func run() { } } // 使用 let person = Person(name: "jack", age: 10) person.run()

  • struct 在 Swift 中是值类型,为内容拷贝。具体参见下方代码:

let jack = Person(name: "jack", age: 10) var rose = jack // 虽然 rose 的内容是从 jack 来的,但修改 rose 的 name 属性并不会影响 jack 的name 属性。 rose.name = "rose" print(rose.name, jack.name) // rose jack

  • struct 默认会提供构造函数。
class

用 class 关键字修饰,可以声明属性和函数。

// 声明 class Person { var name: String let age: Int func run() { } init(name: String, age: Int) { self.name = name self.age = age } } // 使用 let jack = Person(name: "jack", age: 10) var rose = jack rose.name = "rose" print(rose.name, jack.name) // rose rose

  • • class 在 Swift 是引用类型,为指针拷贝。所以的代码改变了 rose 的 name 值,jack 的 name 值也跟着改变。
  • • class 不会提供构造函数,需要自己创建。
总结
  • • 介绍了 var/let 、if/for/while、函数、集合、struct/class。
  • • var 声明可变的数据;let 声明不可变的数据。
  • • Array 存储一组同类型、有序的数据;Ditionary 存储键唯一且无序的键值对;Set 存储一组同类型、无序且值唯一的数据。
  • • struct 为值类型,系统默认提供构造函数;class 为引用类型,系统不提供构造函数,需自己创建。
,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页