前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Swift| 基础语法(二)

Swift| 基础语法(二)

作者头像
進无尽
发布于 2018-09-12 09:24:09
发布于 2018-09-12 09:24:09
80200
代码可运行
举报
文章被收录于专栏:進无尽的文章進无尽的文章
运行总次数:0
代码可运行

前言

总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift有所帮助,同时也是对自己的一个总结。

本文涉及:

  • 常量&变量
  • Swift中数据类型
  • 逻辑分支
  • 循环

一、常量&变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
什么是常量和变量
在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量
    使用var来定义变量,定义之后可以修改
    使用let来定义常量,定义之后不可以修改
注意:
    是指向的对象不可以再进行修改.但是可以通过指针获得对象后,修改对象内部的属性
    在真实使用过程中,建议先定义常量,如果需要修改再修改为变量(更加安全)

let view1 : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
view1.backgroundColor = UIColor.redColor()

var x: Double? 全局变量/局部变量
var p1 = Point(x: 1, y: 2)

二、Swift中数据类型

Swift中的数据类型也有:整型/浮点型/对象类型/结构体/元组类型等等 先了解整型和浮点型

1、整型
  • 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int32 : 有符号32位整型 Int64 : 有符号64位整型 Int : 和平台相关(默认,相当于OC的NSInteger)
  • 无符号 UInt8 : 无符号8位整型 UInt16 : 无符号16位整型 UInt32 : 无符号32位整型 UInt64 : 无符号64位整型 UInt : 和平台相关(常用,相当于OC的NSUInteger)(默认) 获取Int最值:(最大值、最小值) var minValue = Int.min; var maxValue = Int.max;
2、浮点型
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Float : 32位浮点型
Double : 64浮点型(默认)

// 定义一个Int类型的变量m,并且赋值为10
var m : Int = 10
  // 定义一个Double类型的常量n,并且赋值为3.14
let n : Double = 3.14
3、Swift中在进行基本运算时必须保证类型一致,否则会出错
  • 相同类型之间才可以进行运算
  • 因为Swift中没有隐式转换
4、数据类型的转化
  • Int类型转成Double类型:Double(标识符)
  • Double类型转成Int类型:Int(标识符) let a = 10 let b = 3.14 // 错误写法 // let c = a + b // let c = a * b // 正确写法 let c = Double(a) + b let d = a + Int(b)
5、元组

元组是Swift中特有的,OC中没有元组相关类型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//1.使用元组来定义一组数据
let infoTuple = ("cjh",18,1.8)
let nameTuple = infoTuple.0
print(nameTuple)

//2.1 普通元组的定义方式
let errorMsg = ("error",123)
errorMsg.0

//2.2 给元组中所有的元素起别名
let errorTuple1 = (error : "error", errorCode : 123)
errorTuple1.error
errorTuple1.0

//2.3 元组的元素别名  就是元组的名称
let (error,errorCode1) = ("error",123)
error
errorCode1

//3.元组的运用之一,快速的交换2个数值
var a = 10
var b = 20
(a, b) = (b, a)
a
b
//交换完毕

三、逻辑分支

1、if分支语句

判断句可以不加()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if score < 60 {
    print("不及格")
} else if score <= 70 {
    print("及格")
}

// 取出url2的值赋值给temp, 如果取到了值那么就可以进入if后面的大括号, 如果没有取到值(nil), 就不会进入if后面的大括号
if let abc = url2
{
      print(abc)
}
2、三目运算符

Swift 中的 三目 运算保持了和 OC 一致的风格

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 let a = 10
 let b = 50
 let result = a > b ? a : b
 print(result)
3、guard的使用

guard是Swift2.0新增的语法 它与if语句非常类似,它设计的目的是提高程序的可读性 guard语句必须带有else语句,它的语法如下:

  • 当条件表达式为true时候跳过else语句中的内容,执行语句组内容
  • 条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw guard 条件表达式 else { // 条换语句 break } 语句组 例子 func online(age : Int) -> Void { guard age >= 18 else { print("回家去") return } print("可以上网") } let age = 18 online(age) ---- 可以上网
4、switch分支

基本用法和OC用法一致 不同之处: switch后可以不跟() case后可以不跟break(默认会有break)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let sex = 0

switch sex {
case 0 :
    print("男")
case 1 :
    print("女")
default :
    print("其他")
}

一个case判断中,可以判断多个值 多个值以 , 隔开

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let sex = 0

switch sex {
case 0, 1:
      print("正常人")
default:
    print("其他")
}

Switch支持多种数据类型 浮点型的switch判断 支持字符串类型判断 switch支持区间判断

  • 开区间:0..<10 表示:0~9,不包括10
  • 闭区间:0...10 表示:0~10 let score = 88 switch score { case 0..<60: print("不及格") case 60..<80: print("几个") case 80..<90: print("良好") case 90..<100: print("优秀") default: print("满分") }

四、循环

for in 循环和 下标遍历循环

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  let arrNuber:[Int] = [100,200,300]
    //        let arrNuber = [100,200,300]
    for a in arrNuber {
        print(a)
    }
    for i in 0..<arrNuber.count{
        print(arrNuber[i])
    }
    
    var count = 0
    while count < arrNuber.count {
        print(arrNuber[count])
        count += 1
        
    }

如果在for循环中不需要用到下标i

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for _ in 0..<10 {
  print("hello")

}

while循环

  • while的判断句必须有正确的真假,没有非0即真
  • while后面的()可以省略 var count = 0 while count < arrNuber.count { print(arrNuber[count]) count += 1 }

do while循环 使用repeat关键字来代替了do

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var b = 0
repeat {
    print(b)
    b  += 1
} while b < 20
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.05.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
Linux内核进程原理
进程是指计算机中已运行的程序。进程本身不是基本的运行单位,而是线程的容器。程序本身只是指令、数据及组织形式的描述,而进程才是程序真正的运行实体。在Linux内核中,进程又称为任务(task),进程的虚拟地址空间可以分为用户虚拟地址空间和内核虚拟地址空间,所有进程共享内核虚拟地址空间,又各自拥有独立的用户虚拟地址空间。
laputa
2022/11/13
2.2K0
【Linux进程】初悉进程
在Linux中,进程是最基本的执行单位。进程调度在整个操作系统中属于核心地位,是操作系统实现多任务处理的关键操作,确保每个进程在有限的CPU资源下有序的完成相应操作。
小文要打代码
2025/01/09
2350
【Linux进程】初悉进程
Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)
因此当前linux的调度程序由两个调度器组成:主调度器,周期性调度器(两者又统称为通用调度器(generic scheduler)或核心调度器(core scheduler))
233333
2018/12/06
4.5K1
Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】
Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。它定义在include/linux/sched.h文件中。
233333
2018/09/14
2.4K0
Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】
【Linux】深入理解进程管理与高效运用
        进程是正在运行的程序实例,在Linux内核中,进程被称为任务,例如内核线程与用户线程等。
小文要打代码
2025/03/18
1580
task_struct结构详解
在 Linux 内核中,无论是进程还是线程,到了内核里面,都叫做任务(Task),由统一的数据结构 task_struct 进行管理。task_struct 是 Linux 中的进程描述符,是感知进程存在的唯一实体。Linux 内核中通过一个双向循环链表将所有的 task_struct 串了起来,不同的操作系统中,PCB 所包含的内容也会不同。
小文要打代码
2025/04/01
1080
Linux调度原理介绍和应用(前篇)
提示:公众号展示代码会自动折行,建议横屏阅读 摘要 本文(有码慎入)主要介绍Linux任务调度相关的发展历史和基本原理。多年以来,内核界的黑客们一直着力于寻找既能满足高负载后台任务资源充分利用,又能满足桌面系统良好交互性的调度方法,尽管截至到目前为止仍然没有一个完美的解决方案。本文希望通过介绍调度算法的发展历程,因为任务调度本身不是一个局限于操作系统的话题,包括数据库,程序语言实现等,都会与调度相关。本文在介绍过程中,会引用Linux的代码实现作为说明,同时阐述其中的一些趣闻轶事。 调度实体 进程任务通常包
腾讯数据库技术
2018/07/26
1.4K0
一个小实验巩固下进程管理
通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task_struct来描述的,那么本篇我们实践下如何通过task_struct字段把系统中所有的进程包含的信息打印出来,比如:属性信息,状态,进程标识符,优先级信息,亲属关系,文件系统信息,内存方面的信息等。
刘盼
2020/05/08
8250
一个小实验巩固下进程管理
深入理解Linux内核进程上下文切换
韩传华,就职于南京大鱼半导体有限公司,主要从事linux相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,乐于分享喜欢学习,喜欢专研Linux内核源代码。
Linux阅码场
2020/10/10
10.7K0
深入理解Linux内核进程上下文切换
【Linux 内核 内存管理】虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )
进程 的 " 虚拟地址空间 " 由 mm_struct 和 vm_area_struct 两个数据结构描述 ;
韩曙亮
2023/03/30
3.8K0
【Linux 内核 内存管理】虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )
《Linux内核分析》之分析fork函数对应的系统调用处理过程
xref: /linux-3.18.6/include/linux/sched.h
WindCoder
2018/09/20
1.1K0
《Linux内核分析》之分析fork函数对应的系统调用处理过程
全新系列-Linux进程管理初探
大家好,我是程栩,一个专注于性能的大厂程序员,分享包括但不限于计算机体系结构、性能优化、云原生的知识。
程栩的性能优化笔记
2023/11/01
2990
全新系列-Linux进程管理初探
Linux进程管理(一)进程数据结构
Linux内核中使用 task_struct 结构来表示一个进程,这个结构体保存了进程的所有信息,所以它非常庞大,在讲解Linux内核的进程管理,我们有必要先分析这个 task_struct 中的各项成员
用户6280468
2022/06/09
1.3K0
Linux进程管理(一)进程数据结构
聊聊Linux中线程和进程的联系与区别!
关于进程和线程,在 Linux 中是一对儿很核心的概念。但是进程和线程到底有啥联系,又有啥区别,很多人还都没有搞清楚。
开发内功修炼
2022/12/07
2.4K0
聊聊Linux中线程和进程的联系与区别!
一文看懂 | fork 系统调用
Unix标准的复制进程的系统调用时fork(即分叉),但是Linux,BSD等操作系统并不止实现这一个,确切的说linux实现了三个,fork,vfork,clone(确切说vfork创造出来的是轻量级进程,也叫线程,是共享资源的进程)
用户7686797
2021/10/20
2.6K0
sched.h (版本4.16.7全部内容)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
3940
Linux进程是如何创建出来的?
在 Linux 中,进程是我们非常熟悉的东东了,哪怕是只写过一天代码的人也都用过它。但是你确定它不是你最熟悉的陌生人?我们今天通过深度剖析进程的创建过程,帮助你提高对进程的理解深度。
开发内功修炼
2022/12/07
2.2K0
Linux进程是如何创建出来的?
Linux 进程管理
在内核层面,每个进程都是由task_struct 描述的,这个结构体非常大,可以粗略看下各主要内容:
一只小虾米
2023/03/09
10.2K0
Linux 进程管理
吐血整理 | 肝翻 Linux 进程调度所有知识点
前面我们重点分析了如何通过 fork, vfork, pthread_create 去创建一个进程或者线程,以及后面说了它们共同调用 do_fork 的实现。现在已经知道一个进程是如何创建的,但是进程何时被执行,需要调度器来选择。所以这一节我们介绍下进程调度和进程切换的详情。
刘盼
2021/12/13
2K0
吐血整理 | 肝翻 Linux 进程调度所有知识点
【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )
" 内核线程 " 是一种 特殊进程 , 独立运行在 " 内核空间 " , 其将 " 内核函数 " 委托给 独立进程 , 该 " 独立进程 " 与 其它进程 ( 包括 普通进程 , 内核自身 , 用户级线程 ) 并行执行 ;
韩曙亮
2023/03/30
4.2K0
【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )
推荐阅读
相关推荐
Linux内核进程原理
更多 >
LV.5
这个人很懒,什么都没有留下~
目录
  • 前言
  • 一、常量&变量
  • 二、Swift中数据类型
    • 1、整型
    • 2、浮点型
    • 3、Swift中在进行基本运算时必须保证类型一致,否则会出错
    • 4、数据类型的转化
    • 5、元组
  • 三、逻辑分支
    • 1、if分支语句
    • 2、三目运算符
    • 3、guard的使用
    • 4、switch分支
  • 四、循环
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档