Swift学习入门,新手小白看过来
😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍
文章目录
- 前言
- Swift 简单介绍
- Swift 数据类型
- 类型别名
- 声明变量
- 声明常量
- Swift 可选(Optionals)类型
- Swift 运算符
前言
最近在学习 Swift,整理了一些内容,在此记录,有问题的话欢迎小伙伴进行指正。
Swift 简单介绍
Swift是一种支持多编程范式和编译式的开源编程语言,Swift结合了C和Objective-C的优点并且不受C兼容性的限制。
那么问题来了,什么是多编程范式?
多编程范式是指在软件开发中使用多个不同的编程范式或编程风格的方法。编程范式是一种对问题求解和程序设计的方法论,它提供了一组规则和原则来组织和表达计算机程序。
常见的编程范式包括:
- 命令式编程范式(Imperative Programming Paradigm):以指令的顺序执行为基础,通过修改程序状态来实现计算。常见的命令式编程语言包括C、Java和Python。
- 函数式编程范式(Functional Programming Paradigm):将计算视为函数之间的转换,强调无副作用的函数和不可变数据。常见的函数式编程语言包括Haskell、Lisp和Clojure。
- 面向对象编程范式(Object-Oriented Programming Paradigm):以对象的概念为基础,通过定义类、对象和它们的关系来组织代码。常见的面向对象编程语言包括Java、C++和Python。
- 声明式编程范式(Declarative Programming Paradigm):描述问题的逻辑和约束条件,而不指定如何解决问题。常见的声明式编程范式包括逻辑编程和数据库查询语言等。
- 并发编程范式(Concurrent Programming Paradigm):处理并发和并行计算的编程范式,涉及多线程、协程或消息传递等技术。 领域特定编程范式(Domain-Specific Programming Paradigm):针对特定领域的问题建立的编程范式,例如数据分析、机器学习和图形处理等。
文件后缀为名.swift,
命名规范和其他编程语言一样
- 区分大小写
- 不能以数字开头
- 标识符中其他字符可以是下划线、字母、数字
注意:
如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(```).
let class = “Jenny”
另外在Swift中,对空格有一定的要求,比如下面举的例子
//正确写法
var name = "Jenny";var name="Jenny"
//错误写法
var name= "Jenny";var name ="Jenny" // 会报错'=' must have consistent whitespace on both sides
// 运算符不能直接跟在变量或者常量的后面
let a = 1 + 5 //正确写法——推荐写法
let a = 1+5 //正确
备注:所以在编程过程中尽量符号前后都要有空格,这样比较美观,而且其他编程语言也不会报错。在Swift中使用print()函数打印输出,它没有println()函数,
Swift 数据类型
和 java 有点类似:Int、Float、Double、String、Bool、Character
字符:Character,指的是单个字母,例如“C”
布尔值字面量有三个值:true(真)、false(假)、nil 表示没有值
类型别名
类型别名对当前的类型定义了另一个名字,类型别名通过使用 typealias 关键字来定义。例如:
定义了 Int 的类型别名为 Demo:
typealias Demo = Int
var test:Demo = 12 // 这种命名方式和Kotlin一样,在定义变量是直接定义数据类型
// 如果我们想让其不换行输出,只需要将最后一个参数赋值为空字符串即可,
// 在字符串中可以使用括号与反斜线来插入变量
print("\(test)的值为:\(test)") // "12的值为:12\n"
print("\(test)的值为:\(test)",terminator: "") //"12的值为:12"
声明变量
使用var关键字定义一个变量,和kotlin有点类似
var a = "hello"
var b:Float
b = 3.14159
声明常量
使用let 关键字声明 ,常量的值不可改变,常量需要以字母或下划线开始。
let a = 2
//类型标注
let c:Int = 2
Swift 可选(Optionals)类型
用于处理值缺失的情况,可选表示"那儿有一个值,并且它等于 x “或者"那儿没有值”。
// 两种声明方式均可
var optionalInteger: Int? // 在类型和 ?之间没有空格。
var optionalInteger: Optional<Int>var optionalInteger: Int? // 当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil。
optionalInteger = 20
optionalInteger! //20
// 如果一个可选类型的实例包含一个值,你可以用后缀操作符 !来访问这个值
// 注意:使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。/* 强制解析 */
var optionalInteger: Int?
optionalInteger = 42
optionalInteger!/* 自动解析 */
// 在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)
var a: Int!
a = 18
print(a)
二进制前缀0b、八进制前缀0o、十六进制前缀0x,
Swift 运算符
加减乘除取余、逻辑运算符
逻辑与:&&
或:||
非:!
区间运算符
- 闭区间运算符 :a…b 例如:1…5 区间值为 1, 2, 3, 4 和 5
- 半开区间运算符 : a…<b 例如:1…<5 区间值为 1, 2, 3, 和 4
for index in 1...5 {print("\(index) * 5 = \(index * 5)")
}for index in 1..<5 {print("\(index) * 5 = \(index * 5)")
}
】
三目运算符:condition ? X : Y
运算符优先级:先算术、后移位、最后位运算、逻辑运算在最后

相关文章:
Swift学习入门,新手小白看过来
😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…...
【Ant Design Pro】快速上手
初始化 初始化脚手架:快速开始 官方默认使用 umi4,这里文档还没有及时更新(不能像文档一样选择 umi 的版本),之后我选择 simple。 然后安装依赖。 在 package.json 中: "start": "cross-e…...
Hive3:Hive初体验
1、创建表 CREATE TABLE test(id INT, name STRING, gender STRING);2、新增数据 INSERT INTO test VALUES(1, 王力红, 男); INSERT INTO test VALUES(2, 钉钉盯, 女); INSERT INTO test VALUES(3, 咔咔咔, 女);3、查询数据 简单查询 select * from test;带聚合函数的查询 …...
blender顶点乱飞的问题解决
初学blender,编辑模式下移动某些顶点,不管是移动还是滑动都会出现定点乱飞的问题,后来才发现是开了吸附工具的原因!!!! 像下面这样,其实我只是在Z轴上移动,但是就跑的很…...
Elasticsearch(ES) 集群脑裂
脑裂问题(split-brain problem)是指一个分布式系统中,当网络分裂(network partition)发生时,导致系统内部的两个或多个节点相互独立地认为自己仍然与其他节点连接,每个节点组都试图执行操作,这可能会导致数…...
spark 3.0.0源码环境搭建
环境 Spark版本:3.0.0 java版本:1.8 scala版本:2.12.19 Maven版本:3.8.1 编译spark 将spark-3.0.0的源码导入到idea中 执行mvn clean package -Phive -Phive-thriftserver -Pyarn -DskipTests 执行sparksql示例类SparkSQLExam…...
3.3、matlab彩色图和灰度图的二值化算法汇总
1、彩色图和灰度图的二值化算法汇总原理及流程 彩色图和灰度图的二值化算法的原理都是将图像中的像素值转化为二值(0或1),以便对图像进行简化或者特定的图像处理操作。下面分别介绍彩色图和灰度图的二值化算法的原理及流程: 1)彩色图的二值化算法原理及流程 (1)原理:…...
新手必看:Elasticsearch 入门全指南
Elasticsearch 入门介绍 Elasticsearch 是一个开源的分布式搜索和分析引擎,广泛应用于处理大规模数据和实时搜索需求。它基于 Apache Lucene 构建,具备高可扩展性和分布式特性,能够快速、可靠地存储、搜索和分析大量数据。本文将介绍 Elasti…...
【Linux】TCP全解析:构建可靠的网络通信桥梁
文章目录 前言1. TCP 协议概述2. TCP报头结构3. 如何理解封装和解包呢?4. TCP的可靠性机制4.1 TCP的确认应答机制4.2 超时重传机制 5. TCP链接管理机制5.1 经典面试题:为什么建立连接是三次握手?5.2 经典面试题:为什么要进行四次挥…...
图像处理 -- ISP中的3DNR与2DNR区别及实现原理
ISP中的3DNR与2DNR区别及实现原理 2DNR(2D Noise Reduction) 2DNR的原理: 2DNR主要针对单帧图像进行降噪处理。它利用空间域内的像素值,采用空间滤波的方法来减少噪声。常用的方法包括均值滤波、中值滤波和高斯滤波等。这些方法…...
硬盘分区读不出来的解决之道:从自救到专业恢复
在日常的计算机使用过程中,硬盘分区读不出来的问题常常令人头疼不已。这一问题不仅阻碍了用户对数据的正常访问,还可能预示着数据安全的潜在威胁。硬盘分区读不出来,通常是由于分区表损坏、文件系统错误、物理扇区损坏、驱动程序冲突或硬件连…...
盘点2024年网上很火的4个语音识别转文字工具。
语音识别转文字是一项非常实用的技术,可以帮助我们在会议记录中省去手动记录,在采访中迅速得到文字稿,在学习中快速生成课堂笔...运用十分广泛。但是很多人不知道要怎么转换,在这里我便给大家介绍几款效率非常高的语音转文字的工具…...
解决 Git 访问 GitHub 时的 SSL 错误
引言 在使用 Git 进行版本控制时,我们可能会遇到各种网络相关的错误。其中一种常见的错误是 SSL 连接问题,这会导致 Git 无法访问远程仓库。本文将介绍一个具体的错误 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0,以及如何通过禁用 SSL 证…...
LinuxCentos中安装apache网站服务详细教程
🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理防护和群集专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作…...
LUA脚本改造redis分布式锁
在redis集群模式下,我们会启动多个tomcat实例,每个tomcat实例都有一个JVM,且不共享。而synchronize锁的作用范围仅仅是当前JVM,所以我们需要一个作用于集群下的锁,也就是分布式锁。(就是不能用JVM自带的锁了…...
web端使用HTML5开发《贪吃蛇》小游戏教程【附源码】
自制游戏列表 1植物大战僵尸自制HTML5游戏《植物大战僵尸》2开心消消乐自制HTML5游戏《开心消消乐》3贪吃蛇自制HTML5游戏《贪吃蛇》4捕鱼达人自制HTML5游戏《捕鱼达人》 一、游戏简介 贪吃蛇是一款经典的电子游戏,最早在1976年由Gremlin公司推出,名为…...
Selenium使用教程-Selenium环境搭建与基础操作
Selenium环境搭建与基础操作 1. 引言:Selenium简介 Selenium,作为自动化测试领域的明星工具,以其强大的跨浏览器测试能力而闻名。它支持多种编程语言(如Java、Python、C#等),允许开发者编写脚本来模拟真…...
1950年-2021年中国历年民航航线里程统计报告
数据为1950年到2021年我国每年的民航航线总里程数据。 2021年,我国定期航班航线总里程为689.78万公里,相比2019年下降了258.44万公里。 数据统计单位为:公里. 数据说明: 2011年起民航航线里程改为定期航班航线里程 我国定期航班…...
前端了解到框架-网络复习
前端 HTML 超文本标记语言 画页面 各种各样的标签组成页面进行展示 桌面创建文本修改后缀即可 <!DOCTYPE html>: 声明文档类型和HTML版本。<html>: 根标签,所有其他标签都包含在内。<head>: 包含了文档的元数据,如字符编码、网页标…...
防火墙——网络环境支持
目录 网络环境支持 防火墙的组网 web连接上防火墙 web管理口 让防火墙接到网络环境中 编辑 管理员用户管理 缺省管理员 接口 配置一个普通接口 创建安全区域 路由模式 透明模式 混合模式 防火墙的安全策略 防火墙转发流程 与传统包过滤的区别 创建安全策略 …...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
