| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> swift基础学习笔记 -> 正文阅读 |
|
[移动开发]swift基础学习笔记 |
?1、变量声明1.1 类型标注? ? ? ? 当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称
1.2 自动类型推断? ? ? ? swift 可以自动类型推断 ,当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型。如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。
1.3 类型安全Swift 是一个类型安全(type safe)的语言。 由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误
意思为不能将 'String' 字符串赋值给 'Int' 变量 1.4 可选类型Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值"。类似与kotlin dart语言 可空类型,例如:
说明myString的值可以赋值为nil 如 myString=nil,也可以赋值正常String 值 ,如 myString ="hello 树哥" 1.4.1 强制解析当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个感叹号表示这个值一定不为空 这个和dart语言类似 跟kotlin的!!类似,比如:
加上!
1.4.2 自动解析在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。
当然如果变量在声明时就已经赋初始值的情况就可以直接使用了,例如:
1.4.3 可选绑定使用 if let临时常量 = 可选类型 来判断可选类型是否包含值,如果包含就把值赋给临时常量,否则(可选类型为nil时)if语句判断为假。
如果optionalName的值不为空,则把optionalName的值赋值给name ,然后运行? { ? ? greeting = "Hello, \(name)" }的语句,比如以上例子 最后打印下greeting值,因为 greeting = "树哥!"已赋值不为空,所以最后打印 Hello,树哥! 如果optionalName的值是nil? ?条件会判断为false 大括号里面的代码会跳过; 1.4.4 类型别名类型别名对当前的类型定义了另一个名字,类型别名通过使用 typealias 关键字来定义。语法格式如下:
例如以下定义了 Int 的类型别名为 Feet:
现在,我们可以通过别名来定义变量:
1.5 Swift 字符串?1.5.1 字符串你可以通过使用字符串字面量或 String 类的实例来创建一个字符串:
1.5.2 Swift 字符(Character)let char1: Character = "A" //只能单个字符 多个会报错 例如:
//空字符变量 Swift 中不能创建空的 Character(字符) 类型变量或常量: 2、声明常量常量一旦设定,在程序运行时就无法改变其值。 常量可以是任何的数据类型如:整型常量,浮点型常量,字符常量或字符串常量。同样也有枚举类型的常量: 常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量的值可以随意更改。
其他都和变量一样,比如类型推荐、类型标注、类型别名等 3、运算符像算术运算符(swift取消了++和--)、比较运算符、逻辑运算符和大多数编程语言一样,区间运算符 ... 这个比较独特类似kotlin的 Swift 提供了两个区间的运算符。
比如
3.1 Swift 空格 Swift语言并不是像C/C++,Java那样完全忽视空格,Swift对空格的使用有一定的要求 运算符不能直接跟在变量或常量的后面。例如下面的代码会报错:
只有这样写才不会报错:
4、条件语句if语句和其他编程语言一样 忽略 switch语句有点区别 Swift switch 语句中,默认语法是必须要添加 default 语句。但也可以不加 注意:在大多数语言中,switch 语句块中,case 要紧跟 break,否则 case 之后的语句会顺序运行,而在 Swift 语言中,默认是不会执行下去的,switch 也会终止(switch 不会从上一个 case 分支落入到下一个 case 分支中。只要第一个匹配到的 case 分支完成了它需要执行的语句,整个switch代码块完成了它的执行)。如果你想在 Swift 中让 case 之后的语句会按顺序继续运行,则需要使用 fallthrough 语句。 4.1 省略breakSwift Switch 语句中, break 是可以省略不写的(添加了也可以),默认执行完当前 case 下的内容后,直接返回了,即使后续还有可满足的条件。
4.2 fallthroughSwift fallthrough 语句让 case 之后的语句会按顺序继续运行,且不论条件是否满足都会执行。
5、Swift 数组Swift 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 Swift 数组会强制检测元素的类型,如果类型不同则会报错,Swift 数组应该遵循像Array<Element>这样的形式,其中Element是这个数组中唯一允许存在的数据类型。 如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变数组里的项目。如果将一个数组赋值给常量,数组就不可更改,并且数组的大小和内容都不可以修改。 5.1 创建数组以下是创建一个初始化大小数组的语法:
以下实例创建了一个类型为 Int ,数量为 3,初始值为 0 的空数组:
以下实例创建了含有三个元素的数组:
5.2 访问数组我们可以根据数组的索引来访问数组的元素,语法如下:
index 索引从 0 开始,即索引 0 对应第一个元素,索引 1 对应第二个元素,以此类推。
5.3 遍历数组var a:[String]=["hello","啊","树哥"] for 循环
forEach循环
?enumerate() 方法遍历(需要每个数据项的值和索引值)
5.4 修改数组使用 append() 方法或者赋值运算符 += 在数组末尾添加元素
5.5 isEmpty 属性我们可以通过只读属性 isEmpty 来判断数组是否为空,返回布尔值:
6、 字典Swift 字典用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。 Swift 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。 Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。 如果创建一个字典,并赋值给一个变量,则创建的字典就是可以修改的。这意味着在创建字典后,可以通过添加、删除、修改的方式改变字典里的项目。如果将一个字典赋值给常量,字典就不可修改,并且字典的大小和内容都不可以修改。 6.1 创建字典
以下是创建一个空字典,键的类型为 Int,值的类型为 String 的简单语法:
创建一个非空字典,同样key为Int类型,value为String类型,例如 :
6.2 访问字典我们可以根据字典的索引来访问数组的元素,语法如下:
例如
6.3 修改字典6.3.1 updateValue我们可以使用?updateValue(forKey:)?增加或更新字典的内容。如果 key 不存在,则添加值,如果存在则修改 key 对应的值。updateValue(_:forKey:)方法返回Optional值。
6.3.2 通过指定的 key 来修改
6.4 移除 Key-Value 对6.4.1 ?removeValueForKey()?我们可以使用?removeValueForKey()?方法来移除字典 key-value 对。如果 key 存在该方法返回移除的值,如果不存在返回 nil?
6.4.2 指定键的值为 nil?通过指定键的值为 nil 来移除 key-value(键-值)对
6.5 字典遍历字典的遍历和数组一样 for循环、forEach或者enumerate()方法
打印结果: key=2,value=a key=3,value=树哥 key=1,value=hello 字典 key 0 - 字典 (key, value) 对 (2, "a") 字典 key 1 - 字典 (key, value) 对 (3, "树哥") 字典 key 2 - 字典 (key, value) 对 (1, "hello") key=2,value=a key=3,value=树哥 key=1,value=hello 6.6 count 属性使用只读的?count?属性来计算字典有多少个键值对:
7、元组元组类型,用于在单个复合值中对多个值进行分组 元组中的值可以是任何类型,并且不需要是相同类型 7.1 元组声明方式1:最简单的元组,就是在圆括号中,用逗号分隔的一组值
是一个具有两个值的元组,一个元素是整数类型,另一个元素是字符串类型(这是一个合法的数据) 方式2:可以在声明时命名元组的变量,也可以使用它们的名称来调用
7.2 访问元组7.2.1 使用下标取值
7.2.2 使用元素名称
7.2.3 拆分成常量/变量
7.2.4 总结元组优点:
?元组缺点:
?元组适合应用于组合少量的多元的数据,与数组、字典结合使用可以产生强大威力 8、函数8.1函数定义Swift 定义函数使用关键字?func。 定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。 每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。函数的参数传递的顺序必须与参数列表相同。 函数的实参传递的顺序必须与形参列表相同,->?后定义函数的返回值类型。 语法
8.2 函数的创建8.2.1 无参数、无返回值
8.2.2 有参数 无返回值
//调用 fun2(name:"hello") 8.2.3 无参数 有返回值
8.2.4 有参数 有返回值
//调用 8.3 参数标签8.3.1 参数名带标签swift 函数中 参数名可以带标签 一般情况下我们声明一个函数,如下
调用:fun5(name:"树哥") 然后使用参数标签的话,可以这样写
调用: fun6(xxx :"树哥) 8.3.2 忽略参数名标签的作用就是提示 标签可以使用 _ 来代替,这样调用函数的时候,直接传值要传的值就行了,例如:
8.4 函数参数默认值函数中默认参数指的是赋了初始值的参数,在调用函数的时候 默认参数可传也可不传,类似kotlin和dart一样
8.5 函数中的输入输出函数(inout)一般默认在函数中定义的参数都是常量参数,也就是这个参数你只可以查询使用,不能改变它的值。 如果想要声明一个变量参数,可以在参数定义前加 inout 关键字,这样就可以改变这个参数的值了。例如:
此时这个 name 值可以在函数中改变。 一般默认的参数传递都是传值调用的,而不是传引用。所以传入的参数在函数内改变,并不影响原来的那个参数。传入的只是这个参数的副本。 当传入的参数作为输入输出参数时,需要在参数名前加 & 符,表示这个值可以被函数修改。
8.6 函数重载规则 1、函数名相同 2、参数个数不同 || 参数类型不同 || 参数标签不同 9、 闭包 10、结构体 11、类 12、拓展 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 3:21:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |