前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Swift

作者头像
全栈程序员站长
发布2022-07-13 16:32:56
2K0
发布2022-07-13 16:32:56
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

兼具脚本语言,入门更加简单的语言

更加偏向人性化(英文)的编程语言

从2010年開始由克里斯负责开发,前期以GCC编译器为主,后期採用LLVM 6.0

OC诞生于1983年

Swift特点:兼容C Objective-C语言,安全高效而且交互性好,学习曲线平缓

能够不显示指定类型而编译器能够通过赋值来推断变量的类型.可是不支持隐式类型转换,即两种不同类型的变量之间不能够进行运算/赋值

Swift语言中没有main函数,语句后没有分号

* 假设想在一行里面有多个语句,那么须要用”;”进行分隔

输出函数为 println 与 NSLog 一样 自带换行

也能够用不自带换行的 print 语句

变量用var标识,常量用let标识

Swift对于空格敏感

Swift输出变量写法为\(变量/常量名)

在Swift中,整形自己主动判断为Int,假设系统是32位系统,那么这个整形就是Int32,假设是64位系统,那么就是Int64

假设须要特定的整形数,则须要手动写上类型指定(如:Int8)

在Swift中浮点型默觉得double,假设想要float类型须要显示指定

在Swift中不支持隐式转换,假设想让两个不同类型的数据进行运算,那么须要显示的转换类型:类型名(常量/变量名)

变量名能够是汉字,符号等(仅仅要是Unicode字符都能够)

在Swift中变量/常量名差点儿支持全部的Unicode字符,除了数学符号,箭头和横线

字符串拼接能够直接用”+”

“+”相当于C++中的运算符重载

元组:(概念来自关系型数据库)

数据库中的一条记录相当于一个元组,元组中的数据能够是不同类型

与结构体类似,但不须要事先定义类型

如:var request404Error = (404,”Request Error Message”)

相当于定义了一个(Int, String)类型的元组

元组分解:能够用 .下标 来取

比如:request404Error.0

在元组定义中能够给出类型名称

如:var errorA = (errorCode:404 , errorMessage: “Request Error Message”)

元组分解:此时能够用 .名称 来取

比如:errorA.errorCode

在Swift中对数组与字典也进行了又一次定义

数组:Array是一个结构体

如:var names = [“张三”, “李四”, “王五”]

相当于:var names: String[] = [“张三”, “李四”, “王五”]

数组中的元素类型应该同样

加入�元素用 .append()

如:names.append(“赵六”)

*一次仅仅能加入�一个元素

也可用+ 将两个数组拼接到一起,类似于字符串拼接

如:names = names + name1

通过下标取数组元素

如:names[1] = “aaa”

通过 .removeAtIndex() 移除数组中的某个元素(按坐标)

如:names.removeAtIndex(0)

通过 .removeLast() 移除数组中的最后一个元素

如:names.removeLast()

通过 .removeAll() 移除数组中的全部元素

如:names.removeAll()

通过 .count 获取数组中元素的个数

如:names.count

不可变数组(用let修饰的)不能增删元素,但能够替换元素

tip:数组在定义时元素类型不一致,系统会默认该数组为NSArray

字典:

与OC不同,字典也用[]定义

如:var person = [“name”:”张三”, “sex”:”男”]

Swift规定全部的key为同一类型,全部的value为同一类型,key与value能够是不同类型

key的类型为可哈希的(即key的值不能同样)

取元素可用[key值]

如:person[“name”]

加入�一对键值可參照数组

如:person[“age”] = “5”

改动value跟加入�键值语法同样,与OC中的字典类似

更新字典中的key相应的value值也能够用 .updateValue(newValue, forKey:key)

如:person.updateValue(“张三三”, forKey:”name”)

该方法有返回值:ValueType? (被替换掉的旧值)

该方法也能够加入�一对键值,此时返回值为空

* 数组和字典的可变和不可变通过let和var判定,不可增删元素,可是数组能够改动已存在元素而字典不能够

数组的遍历用for 变量 in 数组名 {}

如:for name in names {

}

既想知道下标,又想知道下标相应的元素的值能够用

for (index, 变量) in enumerate(数组名) {

}

* in 前面的是一个元组

如:for (index, name) in enumerate(names) {

}

字典的遍历能够用

for (key, value) in 字典名 {

}

依旧用元组遍历

如: for (key, value) in person {

}

* 字典的打印是无序的

Swift中的Bool有两个值:true和false

分支语句:

Swift中的分支语句的条件仅仅能是Bool类型

如:

var isNumber: Bool = true

if isNumber {

}

或:

var aNumber = 3

if aNumber > 100 {

}

switch

语法:

switch 变量 {

case 条件:语句

default:语句

}

默认没有break,可是case中系统自带break

如:

switch i {

case 1:println(“lololololololo”)

default:println(“aaaaaaa”)

}

假设想要运行下个case语句,需加上fallthrough语句

进阶功能:

case语句的条件还能够是一个范围,而且范围能够交叉

用 值..值 或 值…值 来构建一个区间

where是一个二次推断语句,即在满足第一个条件的同一时候满足where之后的条件才干使整个条件为真

case的条件也能够是一个元组,即swith后面的变量/常量能够是一个元组

如:

var point = (3,4)

switch point {

case (0, 0):

println(“原点”)

case (_, 0):

println(“X轴”)

case (0, _):

println(“Y轴”)

default:

println(“象限内”)

}

“_” 表示忽略元组里对应位置的元素

也能够将 “_”替换为变量/常量,就可以取出元组中相应位置的元素

假设同一时候满足多个case,除非case中含有fallthrough语句,否则仅仅运行第一条语句

循环语句:

语法:

for 初值; 条件; 增量 {

}

如:

for var i = 0 ; i < 10 ; i++ {

}

也能够写成:

for 循环增量 in 范围 {

}

如:

for j in 0..9 {

}

包含左边的值,不包含右边的值

for j in 0…9 {

}

左右的值都包含

while语句

语法:

while 条件 {

}

如:

var i = 0

while i<10 {

i++

}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118291.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 兼具脚本语言,入门更加简单的语言
  • 更加偏向人性化(英文)的编程语言
  • 从2010年開始由克里斯负责开发,前期以GCC编译器为主,后期採用LLVM 6.0
  • OC诞生于1983年
  • Swift特点:兼容C Objective-C语言,安全高效而且交互性好,学习曲线平缓
  • 能够不显示指定类型而编译器能够通过赋值来推断变量的类型.可是不支持隐式类型转换,即两种不同类型的变量之间不能够进行运算/赋值
  • Swift语言中没有main函数,语句后没有分号
  • * 假设想在一行里面有多个语句,那么须要用”;”进行分隔
  • 输出函数为 println 与 NSLog 一样 自带换行
  • 也能够用不自带换行的 print 语句
  • 变量用var标识,常量用let标识
  • Swift对于空格敏感
  • Swift输出变量写法为\(变量/常量名)
  • 在Swift中,整形自己主动判断为Int,假设系统是32位系统,那么这个整形就是Int32,假设是64位系统,那么就是Int64
  • 假设须要特定的整形数,则须要手动写上类型指定(如:Int8)
  • 在Swift中浮点型默觉得double,假设想要float类型须要显示指定
  • 在Swift中不支持隐式转换,假设想让两个不同类型的数据进行运算,那么须要显示的转换类型:类型名(常量/变量名)
  • 变量名能够是汉字,符号等(仅仅要是Unicode字符都能够)
  • 在Swift中变量/常量名差点儿支持全部的Unicode字符,除了数学符号,箭头和横线
  • 字符串拼接能够直接用”+”
  • “+”相当于C++中的运算符重载
  • 元组:(概念来自关系型数据库)
  • 数据库中的一条记录相当于一个元组,元组中的数据能够是不同类型
  • 与结构体类似,但不须要事先定义类型
  • 如:var request404Error = (404,”Request Error Message”)
  • 相当于定义了一个(Int, String)类型的元组
  • 元组分解:能够用 .下标 来取
  • 比如:request404Error.0
  • 在元组定义中能够给出类型名称
  • 如:var errorA = (errorCode:404 , errorMessage: “Request Error Message”)
  • 元组分解:此时能够用 .名称 来取
  • 比如:errorA.errorCode
  • 在Swift中对数组与字典也进行了又一次定义
  • 数组:Array是一个结构体
  • 如:var names = [“张三”, “李四”, “王五”]
  • 相当于:var names: String[] = [“张三”, “李四”, “王五”]
  • 数组中的元素类型应该同样
  • 加入�元素用 .append()
  • 如:names.append(“赵六”)
  • *一次仅仅能加入�一个元素
  • 也可用+ 将两个数组拼接到一起,类似于字符串拼接
  • 如:names = names + name1
  • 通过下标取数组元素
  • 如:names[1] = “aaa”
  • 通过 .removeAtIndex() 移除数组中的某个元素(按坐标)
  • 如:names.removeAtIndex(0)
  • 通过 .removeLast() 移除数组中的最后一个元素
  • 如:names.removeLast()
  • 通过 .removeAll() 移除数组中的全部元素
  • 如:names.removeAll()
  • 通过 .count 获取数组中元素的个数
  • 如:names.count
  • 不可变数组(用let修饰的)不能增删元素,但能够替换元素
  • tip:数组在定义时元素类型不一致,系统会默认该数组为NSArray
  • 字典:
  • 与OC不同,字典也用[]定义
  • 如:var person = [“name”:”张三”, “sex”:”男”]
  • Swift规定全部的key为同一类型,全部的value为同一类型,key与value能够是不同类型
  • key的类型为可哈希的(即key的值不能同样)
  • 取元素可用[key值]
  • 如:person[“name”]
  • 加入�一对键值可參照数组
  • 如:person[“age”] = “5”
  • 改动value跟加入�键值语法同样,与OC中的字典类似
  • 更新字典中的key相应的value值也能够用 .updateValue(newValue, forKey:key)
  • 如:person.updateValue(“张三三”, forKey:”name”)
  • 该方法有返回值:ValueType? (被替换掉的旧值)
  • 该方法也能够加入�一对键值,此时返回值为空
  • * 数组和字典的可变和不可变通过let和var判定,不可增删元素,可是数组能够改动已存在元素而字典不能够
  • 数组的遍历用for 变量 in 数组名 {}
  • 如:for name in names {
  • }
  • 既想知道下标,又想知道下标相应的元素的值能够用
  • for (index, 变量) in enumerate(数组名) {
  • }
  • * in 前面的是一个元组
  • 如:for (index, name) in enumerate(names) {
  • }
  • 字典的遍历能够用
  • for (key, value) in 字典名 {
  • }
  • 依旧用元组遍历
  • 如: for (key, value) in person {
  • }
  • * 字典的打印是无序的
  • Swift中的Bool有两个值:true和false
  • 分支语句:
  • Swift中的分支语句的条件仅仅能是Bool类型
  • 如:
  • var isNumber: Bool = true
  • if isNumber {
  • }
  • 或:
  • var aNumber = 3
  • if aNumber > 100 {
  • }
  • switch
  • 语法:
  • switch 变量 {
  • case 条件:语句
  • default:语句
  • }
  • 默认没有break,可是case中系统自带break
  • 如:
  • switch i {
  • case 1:println(“lololololololo”)
  • default:println(“aaaaaaa”)
  • }
  • 假设想要运行下个case语句,需加上fallthrough语句
  • 进阶功能:
  • case语句的条件还能够是一个范围,而且范围能够交叉
  • 用 值..值 或 值…值 来构建一个区间
  • where是一个二次推断语句,即在满足第一个条件的同一时候满足where之后的条件才干使整个条件为真
  • case的条件也能够是一个元组,即swith后面的变量/常量能够是一个元组
  • 如:
  • var point = (3,4)
  • switch point {
  • case (0, 0):
  • println(“原点”)
  • case (_, 0):
  • println(“X轴”)
  • case (0, _):
  • println(“Y轴”)
  • default:
  • println(“象限内”)
  • }
  • “_” 表示忽略元组里对应位置的元素
  • 也能够将 “_”替换为变量/常量,就可以取出元组中相应位置的元素
  • 假设同一时候满足多个case,除非case中含有fallthrough语句,否则仅仅运行第一条语句
  • 循环语句:
  • 语法:
  • for 初值; 条件; 增量 {
  • }
  • 如:
  • for var i = 0 ; i < 10 ; i++ {
  • }
  • 也能够写成:
  • for 循环增量 in 范围 {
  • }
  • 如:
  • for j in 0..9 {
  • }
  • 包含左边的值,不包含右边的值
  • for j in 0…9 {
  • }
  • 左右的值都包含
  • while语句
  • 语法:
  • while 条件 {
  • }
  • 如:
  • var i = 0
  • while i<10 {
  • i++
  • }
相关产品与服务
关系型数据库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档