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

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 的类型别名为 Demotypealias 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

运算符优先级:先算术、后移位、最后位运算、逻辑运算在最后

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • package:mine android studio新过滤规则及其用法 Filter使用技巧
  • 【AI大模型】-- 应用部署
  • 经典文献阅读之--World Models for Autonomous Driving(自动驾驶的世界模型:综述)
  • 贪心算法总结(2)
  • 排序算法:冒泡排序,golang实现
  • 20.rabbitmq插件实现延迟队列
  • JAVA(IO流-字节流)day 7.29
  • php将数字转为中文汉字
  • 计算机毕业设计LSTM+Tensorflow股票分析预测 基金分析预测 股票爬虫 大数据毕业设计 深度学习 机器学习 数据可视化 人工智能
  • Javascript前端面试基础4【每日学习并更新10】
  • IndexError: list index out of range
  • 物联网架构之Hadoop
  • 区块链软硬件协同,做产业数字化转型的“安全官” |《超话区块链》直播预告
  • 【C++】学习笔记——C++11_1
  • 0729_驱动1 异步通知
  • 77. Combinations
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Cumulo 的 ClojureScript 模块已经成型
  • eclipse的离线汉化
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Js基础知识(四) - js运行原理与机制
  • Mysql数据库的条件查询语句
  • webgl (原生)基础入门指南【一】
  • 基于webpack 的 vue 多页架构
  • 讲清楚之javascript作用域
  • 码农张的Bug人生 - 见面之礼
  • 让你的分享飞起来——极光推出社会化分享组件
  • 云大使推广中的常见热门问题
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • $nextTick的使用场景介绍
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (pojstep1.1.2)2654(直叙式模拟)
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (转)用.Net的File控件上传文件的解决方案
  • .NET文档生成工具ADB使用图文教程
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor
  • [ solr入门 ] - 利用solrJ进行检索
  • [AI 大模型] Meta LLaMA-2
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [C语言]一维数组二维数组的大小
  • [EWS]查找 文件夹
  • [HCTF 2018]WarmUp (代码审计)
  • [Hdp] lc552. 学生出勤记录 II(dp+递推+状态定义+状态转移+向前转移+好题)
  • [java/jdbc]插入数据时获取自增长主键的值
  • [Labtools 27-1429] XML parser encountered a problem in file
  • [Linux] 常用命令--版本信息/关机重启/目录/文件操作
  • [Linux系统编程] 静态库与动态库
  • [NOI2020统一省选 A] 组合数问题 (推式子)
  • [opencvsharp]C#基于Fast算法实现角点检测
  • [RK3568][Android11]内核Oops日志分析
  • [SpringMVC] SSM整合-前后台协议联调
  • [three.js]UV动画
  • [VulnHub靶机渗透]:billu_b0x 快速通关