当前位置: 首页 > news >正文

iOS开发Swift-基础部分

1.常量

let maxNum = 10    //单个常量赋值
let maxNum = 10, minNum = 2     //多个常量赋值用逗号隔开

2.变量

var x = 0.0   //单个变量赋值
var x = 0.0, y = 0.1     //多个变量赋值用逗号隔开

3.类型注解

系统可通过赋初始值进行自动推断。

var name: String   //冒号(:)加空格( )
name = "Hello"   //先注解再赋值
var name, address: String     //多个变量注解
let one: Int = 1     //同时注解和赋值

4.输出

print(name)     //输出一个变量/常量
print("welcome the \(address)")    //输出一串字符加变量,使用转义字符"\"与括号、变量名表示该变量

5.注释

//这是一条注释/* 这也是一条注释 *//* 这是一个篮子
/* 这是篮子里的苹果 */这样方便将有注释的代码注释掉 */

6.分号

平时可加可不加,同一行中有两句话必须加。

let cat = "🐱"; print(cat)

7.整数

Int           UInt(最好不用)

8.浮点数

Double

64位很大/高精度情况下使用15位小数

Float

32位对精度要求不高的情况下用6位小数

9.Swift语言自带类型安全与类型推断,根据赋值类型推断变量/常量字符类型。

10.字符型字面量

十进制数 17
二进制0b前缀0b10001
八进制0o前缀0o21
十六进制0x前缀0x11

11.强制转换

let Pi = Double(three) + 0.1415926
let iPi = Int(Pi)  //截断小数,3.14159会变成3 

12.类型别名

typealias Audio = UInt16   
//typealias:类型别名关键字;Audio:别名;UInt16:原名

13.布尔值(Bool)

let a = true
let b = false

14.元组(tuples)

let http404Error = (404,"Not Found")   //这是一个(Int,String)元组
//元组定义
let (Code,Message) = http404Error
//元组分解
print("status is \(Code)")
print("status is \(Message)")
//当只需要这个元组的一部分时,元组半分解
let (Code,_) = http404Error
print("status is \(Code)
//下标分解
print("status is \(http404Error.0)")
//命名分解
let http404Error = (Code: 404, Message: "Not Found")
print("status is \(http404Error.Code)")

15.可选类型(optionals)

let a = "123"
let b = Int(a)  //b是一个可选类型的Int(Int?)

16.nil

类似于java中的null,是一个值,表示值缺失。

17.可选绑定

if var a = Int(b){    //Int(b)为nil或赋值false,if判断为falseprint("true")}

18.隐式解析可选类型

可选类型option可能有值,也可能无值Int?
强制解析 如果确定有值则解析值。如果没有值(nil),则强制解析会崩溃a!
可选绑定判断是否有值 
if let a = b{print("√")}else{peint("×")}
 

自动解析

(隐式解析)

声明变量时就用"!",使用时会自动解析值,而不需要加"!"

如果它之后可能会成为nil时不要使用隐式解析可选类型!当解析nil时程序会崩溃。

 
//未使用隐式解析时
var dog: String? = "旺财"
let cat: String = dog!
let fish: String = dog!
let monkey: String = dog!
//使用隐式解析时
var dog: String! = "旺财"
let cat: String = dog
let fish: String = dog
let monkey: String = dog
 

19.错误处理

可推断运行失败原因,并传播出去

//1.抛出
func AnError() throws{//可能有错的函数
}
//2.可能有一个错并打印问题
do{try AnError()//没有错时运行的函数}catch{//有错时抛出的内容}
//3.可能有两个错并打印问题
do{try TwoErrors()//没有错时运行的函数success()}catch ErrorsMessage.oneError{//出现第一个错时抛出的内容OneReeor()}catch ErrorsMessage.twoReeor{//出现第二个错时抛出的内容TwoError()}

20.断言和先决条件

断言和先决条件指在编码时赋予一个必要条件或期望,运行时如果这个条件为true则继续运行,如果为false则终止运行。

断言帮助找到错误假设,仅在调试环境中止。先决条件帮助找到存在的问题,在调试环境和生产环境出问题都会被中止。

21.断言调试

let age = -3
assert(age >= 0, ”年龄不能小于0")
assert(条件,"提示")
assert(条件)

断言失败:用于检查条件判断是否完全。

if age > 10{print("年龄>10")}else if age > 0 {print("0<年龄<10")}else{assertionFailure("有个条件还没判断")}

22.强制执行先决条件

一个条件可能为假,但后续运行必须为真。

precondition(index>0,"下标必须大于0")

unchecked模式不执行先决条件。

23.fatalError(_:file:line:)

用于没实现的方法,不会被优化掉,运行到此时程序被中断。

相关文章:

iOS开发Swift-基础部分

1.常量 let maxNum 10 //单个常量赋值 let maxNum 10&#xff0c; minNum 2 //多个常量赋值用逗号隔开2.变量 var x 0.0 //单个变量赋值 var x 0.0&#xff0c; y 0.1 //多个变量赋值用逗号隔开3.类型注解 系统可通过赋初始值进行自动推断。 var name&#…...

【LeetCode-经典面试150题-day11】

目录 128.最长连续序列 228.汇总区间 56.合并区间 57.插入区间 452.用最少数量的箭引爆气球 128.最长连续序列 题意&#xff1a; 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并…...

深度学习入门(三):卷积神经网络(CNN)

引入 给定一张图片&#xff0c;计算机需要模型判断图里的东西是什么&#xff1f; &#xff08;car、truck、airplane、ship、horse&#xff09; 一、卷积神经网络整体架构 CONV&#xff1a;卷积计算层&#xff0c;线性乘积求和RELU&#xff1a;激励层&#xff0c;激活函数P…...

网站是如何识别网络爬虫的?

在爬取数据时&#xff0c;你常常会遇到各种网站的反爬机制。网站是如何检测和拦截网络爬虫的呢&#xff1f;本文将为你揭秘网站使用的几种常见的反爬手段&#xff0c;并为你提供一些解决方案&#xff0c;助你越过反爬壁垒&#xff0c;提升你的实际操作效率。 一、Cookie检测 …...

TP-Link 智能灯泡缺陷能让黑客窃取用户 WiFi 密码

来自意大利和英国的研究人员在 TP-Link Tapo L530E 智能灯泡和 TP-Link Tapo 应用程序中发现了4个漏洞&#xff0c;攻击者可以利用这些漏洞窃取目标的 WiFi 密码。 TP-Link Tapo L530E 是包括亚马逊在内的多个市场上最畅销的智能灯泡。TP-link Tapo是一款智能设备管理应用程序…...

接口测试,如何测试?

一 入参 1 正常的入参 输入正常的参数&#xff0c;响应按照接口文档的约定正常返回。 2 异常的入参 参数异常包括&#xff1a;参数为空&#xff0c;多参或少参&#xff0c;错误的参数数据&#xff1b; 错误的参数数据&#xff1a;数据类型错误、非空参数为空&#xff0c;长…...

React源码解析18(11)------ 实现多次setState的批处理

摘要 在React中&#xff0c;如果涉及到了多次setState&#xff0c;组件render几次。setState是同步的还是异步的。这是一个很常见的面试题。 而本篇文章&#xff0c;就是主要实现React中&#xff0c;对于这部分的性能优化&#xff0c;我们称之为批处理。例如当我有下面的JSX。…...

评测凯迪仕K70「千里眼」智能锁:不忘安全初心,便捷体验更上一层

能打败凯迪仕的&#xff0c;只有它自己。这是我们在体验过凯迪仕最新旗舰产品K70「千里眼」智能锁之后的感受。作为凯迪仕2023年最新旗舰机型&#xff0c;K70「千里眼」智能锁在配置上可以说是「机皇」般的存在。3K超高清智能锁猫眼、车规级24GHz雷达、大小双屏设计、三方可视对…...

mysql数据库root密码遗忘后,修改root密码

目录 方式一&#xff1a; 方式二&#xff1a; 2.1 也可以像我这样&#xff0c;普通用户登录进去后 2.2 执行如下命令&#xff0c;将已知的user1的加密密文更新到root中 2.3 查询数据库 2.4 用root用户登录 2.5 登录正常&#xff0c;但这会root登录进去后&#xff0c;无法…...

网络安全(黑客)快速入门~

网络安全的学习需要遵守循序渐进&#xff0c;由浅入深。 通常网络安全学习方法有两种&#xff1a; 方法1&#xff1a;先学习编程&#xff0c;然后学习Web渗透及工具使用等&#xff1b; 适用人群&#xff1a;有一定的代码基础的小伙伴 基础部分 基础部分需要学习以下内容&am…...

华为OD机试 - 数字颠倒(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、Java算法源码投机取巧七、效果展示 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&am…...

leetcode做题笔记87扰乱字符串

使用下面描述的算法可以扰乱字符串 s 得到字符串 t &#xff1a; 如果字符串的长度为 1 &#xff0c;算法停止如果字符串的长度 > 1 &#xff0c;执行下述步骤&#xff1a; 在一个随机下标处将字符串分割成两个非空的子字符串。即&#xff0c;如果已知字符串 s &#xff0c…...

第一章 初识Linux(含VMware安装Ubuntu、CentOS、Windows、FinalShell、快照)

目录 一、 课程的介绍  1.为什么要学习Linux  2.课程的安排  3.如何学习Linux 二、操作系统概述  1.学习目标  2.计算机的硬件和软件  3.什么是操作系统  4.常见的操作系统  5.本小节的总结 三、初识Linux  1.学习目标  2.Linux的诞生  3.Linux的内核  …...

MATLAB算法实战应用案例精讲-【图像处理】OCR识别方法-CRNN

目录 OCR综述 什么是OCR OCR发展历程 OCR 常用检测方法 基于回归的方法 1) box回归...

无涯教程-PHP - preg_grep()函数

preg_grep() - 语法 array preg_grep ( string $pattern, array $input [, int $flags] ); 返回由与给定模式匹配的输入数组元素组成的数组。 如果将flag设置为PREG_GREP_INVERT&#xff0c;则此函数返回输入数组中与给定模式不匹配的元素。 preg_grep() - 返回值 返回使用…...

【Linux】Nginx解决跨域问题

文章目录 一、跨域问题二、解决跨域问题三、结尾 一、跨域问题 在前后端分离的项目中&#xff0c;前端通常运行在一个域名或端口上&#xff0c;而后端运行在另一个域名或端口上。当浏览器发起跨域请求时&#xff0c;即前端页面向后端发送请求的域名、端口或协议与当前页面的域…...

无涯教程-PHP - preg_split()函数

preg_split() - 语法 array preg_split (string pattern, string string [, int limit [, int flags]]); preg_split()函数的操作与split()完全相同&#xff0c;只不过正则表达式被接受为pattern的输入参数。 如果指定了可选的输入参数limit&#xff0c;则仅返回子字符串的限…...

B. Spreadsheets

Problem - B - Codeforces 问题描述&#xff1a;excel有两种情况&#xff0c; Rr_nCc_n&#xff1a;R行数C列数ZZZ(列数)行数。 对这两个进行相互转换。 细节&#xff1a; 准确判断这两种情况 string str; cin>>str; auto posR str.find("R"), posC st…...

matlab面向对象

一、面向对象编程 1.1 面向过程与面向对象 区别&#xff1a; 面向过程的核心是一系列函数&#xff0c;执行过程是依次使用每个函数面向对象的核心是对象&#xff08;类&#xff09;及其属性、方法&#xff0c;每个对象根据需求执行自己的方法以解决问题 对象&#xff1a;单个…...

01、Cannot resolve MVC View ‘xxxxx前端页面‘

Cannot resolve MVC View ‘xxxxx前端页面’ 没有找到对应的mvc的前端页面。 代码&#xff1a;前端这里引入了 thymeleaf 模板 解决&#xff1a; 需要添加 thymeleaf 的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>s…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...

Linux中INADDR_ANY详解

在Linux网络编程中&#xff0c;INADDR_ANY 是一个特殊的IPv4地址常量&#xff08;定义在 <netinet/in.h> 头文件中&#xff09;&#xff0c;用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法&#xff0c;允许套接字监听所有本地IP地址上的连接请求。 关…...

小白的进阶之路系列之十四----人工智能从初步到精通pytorch综合运用的讲解第七部分

通过示例学习PyTorch 本教程通过独立的示例介绍PyTorch的基本概念。 PyTorch的核心提供了两个主要特性: 一个n维张量,类似于numpy,但可以在gpu上运行 用于构建和训练神经网络的自动微分 我们将使用一个三阶多项式来拟合问题 y = s i n ( x ) y=sin(x) y=sin(x),作为我们的…...

大陆4D毫米波雷达ARS548调试

本文介绍了大陆ARS548毫米波雷达的调试与测试流程&#xff0c;主要包括以下内容&#xff1a; 设备参数&#xff1a;最大检测距离301m&#xff08;可调93-1514m&#xff09;&#xff0c;支持gPTP时间同步。 接线调试&#xff1a; Windows需使用USB-RJ45转换器 Linux可直接连接网…...

Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot

Redis 集群报错 CROSSSLOT Keys in request dont hash to the same slot 的原因及解决方案 1. 错误原因 在 Redis 集群模式下&#xff0c;数据根据 哈希槽&#xff08;Slot&#xff09; 分散存储在不同的节点上&#xff08;默认 16384 个槽&#xff09;。当执行涉及多个 key …...