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

Swift| 基础语法(二)

作者头像
進无尽
发布于 2018-09-12 09:24:09
发布于 2018-09-12 09:24:09
81000
代码可运行
举报
文章被收录于专栏:進无尽的文章進无尽的文章
运行总次数: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下开发stm32 ①
这是为了给接下来的Linux下嵌入式开发打好基础,尽快熟悉Linux下c编程,但是在开发stm32的时候,编译工具链要使用gcc-arm-none-eabi,为什么不是gcc呢?这就要说到linux下的交叉编译了,因为我们要在PC机上编译出可以运行在ARM上的程序,使用gcc编译出的是在PC上运行的程序,所以我们要使用gcc-arm-none-eabi进行交叉编译~
Mculover666
2020/07/16
3.6K0
Linux下开发stm32 ①
【嵌入式】嵌入式开发中隐藏源代码并提供 API 接口(以 ARM Cortex-M3 为例)
工具名称:ARM GNU Toolchain(包含 arm-none-eabi-gcc)
LuckiBit
2025/03/06
1200
快速上手和使用makefile
想学习一样东西,最好先问个为什么要这样,这样学起来才有目标。上大学时,老师讲课总是告诉我们必须这样那样,很少讲这门课是干什么的,有什么意义,有什么用。有一次我问老师,为什么要傅里叶变换,学习它能用来做什么,老师先是很惊讶,然后耐心的给所有同学都讲了讲,老师讲完也很欣慰,笑着说因为很少有学生去问这样的问题。所以也只是讲课,没讲实际的应用和原理的东西。学生们听了也有兴趣了,学也认真了。
杨永贞
2020/08/04
1.4K0
用GCC开发STM32,正点原子开发板的一个库函数版本例程示例
首先下载交叉编译环境GCC,这个网上有很多,百度一下就能找到下载。比如 Sourcery G++ for ARM EABI
杨永贞
2020/08/04
1.6K0
用GCC开发STM32,正点原子开发板的一个库函数版本例程示例
嵌入式Linux驱动开发——汇编点灯
🚀🚀这个地方的代码还是很简单的,主要就是去哪找CCM的地址,不过也不算难找,比如CCGR0,就是0x020c4068。
小点点
2024/04/10
3430
嵌入式Linux驱动开发——汇编点灯
arm(3)| 点亮led灯
这里继续介绍arm裸机的编程,从点亮led灯开始,今天将会分别使用汇编和C语言来实现点亮led灯。里面涉及到的一些arm基础知识可以参考前面的文章arm(1)| 基础知识arm(2)| 汇编指令和伪指令
飞哥
2020/07/17
1.4K0
什么?Arm放弃了自家的汇编语法?改投GNU了?
那么多对于我们初学者来说要学习哪种风格呢?答案是肯定的,学习GNU风格的汇编代码,因为做Linux驱动开发必须掌握的linux内核、uboot,而这两个软件就是GNU风格的。
GorgonMeducer 傻孩子
2020/12/22
2.4K0
什么?Arm放弃了自家的汇编语法?改投GNU了?
用Eclipse开源IDE+gcc编译器开始嵌入式编程
 最近有个项目,不能在Keil uVision4 MDK中开发,只能在linux下并使用命令行的GCC编译器,手动写makefile,对于习惯了IDE的开发者来说多少有些不适应,尤其是查找函数定义之类的不方便。于是成功的实现了使用Eclipse的IDE,并配合GCC编译器开发嵌入式应用程序。Eclipse和GCC环境的搭建先略过,查资料都好解决。先贴出makefile模版,因为没有使用Eclpise的CDT自动生成的makefile,所以这里的 makefile是必须的。GCC编译器用的sourcery codebench,这样能轻松获取GCC工具链,较方便。
杨永贞
2020/08/04
1.1K0
makefile使用.lds链接脚本以及 常用命令 解析
  例1,假如现在有head.c init.c nand.c main.c这4个文件:
嵌入式与Linux那些事
2021/05/20
2.2K0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705
韩曙亮
2023/03/27
2.1K0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
makefile文件编写「建议收藏」
makefile文件用于管理和组织代码工程的编译和链接,其不是可执行文件,其被make工具解析并完成相关动作,下面笔者将介绍makefile中常用的一些语法说明:
全栈程序员站长
2022/09/06
3.4K0
makefile文件编写「建议收藏」
树莓派4裸机基础教程:从hello world开始
当我们去研究一个系统的时候,首先需要从最简单的程序开始入手。前面文章的介绍已经描述了项目的环境搭建以及启动过程。
bigmagic
2020/09/18
2.7K0
用GCC开发STM32入门一(使用官方库)
先说说为什么需要用GCC开发stm32吧,作为一名编程方面的爱好者,又是搞嵌入式的,总是用现成的IDE,感觉很不舒服,虽然IDE能很大提高咱们的工作效率,可是作为业余学习研究,还是越熟悉底层越好。比如如何搭建环境,如何使用编译器和编写makefile,这些搞过linux开发的都知道,而且 linux环境下没那么多IDE可用,而且也没必要用IDE.还有一个原因是,喜欢黑色的dos窗口下编程的感觉,IDE编辑环境太刺眼了,每次下班后都很累眼睛。
杨永贞
2020/08/04
2.9K0
makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 1 1 led
诺谦
2018/01/03
1.8K0
用GCC开发STM32入门二
之前从网上下载了一份用GCC开发stm32的程序,也是用的stm32的库函数编程,启动文件是startup_stm32f10x_hd.s,链接脚本文件是从gcc_ride7中拷贝出的stm32f10x_flash_extsram.ld,做了些简单修改。但是编译了一下,出现了一大堆的错误。于是干脆不用这些文件,从网上查资料,自己写启动文件和链接脚本。仔细看了下startup_stm32f10x_hd.s,这个文件,发现也很简单,无非是定义了一些中断向量表和完成数据段的搬移和.bss段的清零等工作,并把程序跳转到main()函数。然后链接脚本文件告知链接器,把所有目标文件相应的段连接到一起,并把目标文件中的“变量地址”“函数地址”重定位至正确的地址空间; 编写前需要知道C程序编译后的典型内存布局 ,单片机的启动流程以及链接脚本文件的作用和编写等知识。部分知识,摘自网络。
杨永贞
2020/08/04
1.9K0
用GCC开发STM32入门二
区块链多链钱包系统开发技术讲解方案详细(逻辑清晰)
迁移华为的liteOS到STM32F4的开发板上,按照官方的步骤修改makefile后报错:
系统_I8O28578624
2023/02/07
5800
AIoT应用创新大赛-用标准GNU GCC完成RT1060工程编译(纯VSCode开发)
前言:其实在微信群里,NXP官方大佬也多次提到,使用官方IDE可以配置成标准GNU GCC工具链。可能是多年玩单片机的傲慢,让自己觉得不就是个构建环境嘛,有什么,自己改改就行。多花的时间一半算是浪费的,一半算是值得的。
忙碌的死龙
2021/12/24
1.2K0
AIoT应用创新大赛-用标准GNU GCC完成RT1060工程编译(纯VSCode开发)
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )
一. 异常向量表 1. 异常相关概念 (1) 异常 (2) 异常类型简介 2. 异常处理 (1) 异常处理 二. 异常向量表代码编写 1. 初始化异常向量表模块代码 2. 链接器脚本 3. Makefile 编译脚本 4. 编译输出可执行文件 本博客的参考文章及相关资料下载 : 1.ARM 架构参考手册 ( ARM Architecture Reference Manual ) : https://download.csdn.net/download/han1202012/8324641 2.汇
韩曙亮
2023/03/27
3.8K0
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )
【完整版】使用 Rust 进行嵌入式开发
https://club.rt-thread.org/ask/article/2944.html
MikeLoveRust
2021/11/12
2.6K0
以MicroZed单板为例,Vitis嵌入式软件开发极速入门
Vitis是Xilinx新推出的统一软件平台,可实现在 Xilinx 所有芯片(包括 FPGA、SoC 和 Versal ACAP)上开发嵌入式软件和加速应用。 Xilinx主要宣传Vitis可以为异构平台的应用实现加速。其实,Vitis也能完美的支持嵌入式软件开发。 下面以MicroZed单板为例,介绍在Vitis里如何创建嵌入式软件工程,并且编译和调试,直到启动。
hankfu
2020/07/16
1.8K0
推荐阅读
相关推荐
Linux下开发stm32 ①
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验