Swift从0开始学习 简单值 day1

1.0简单值的初始化:
Swift声明值可以使用let 来声明常量,使用 var 来声明变量。let声明是不可修改的且只能赋值一次,var声明是可修改的。两者都不需要显式的指定类型,当你通过一个值来声明变量和常量时,编译器会自动推断其类型。
var greeting = "Hello, playground"

//常量
let tall = 180
//变量
var age = 20
age = 23
//字符串
let hobby = "running"
//显式的指定类型
var speed :Float = 4.5

//speed++
//swift3.0已移除这种写法

let append = hobby + "for" + String(speed) + "min/ lap"

运行结果:

1.1数组和字典的创建: 
两者的创建都是使用中括号,创建、修改,添加,删除,空对象
 

//数组
var numList = ["first", "five", "three", "four"]
numList[1] = "second"
//字典
var info = [
    "age": "18",
    "name": "tony",
]
info["tall"] = "180"
info.removeValue(forKey: "name")

//添加元素
numList.append("five")
print(numList)
//空数组、字典
numList = []
info = [:]

运行效果 

如果数组的元素或者字典的值,是有多种类型的话可以指定类型为Any

//数组
var numList : [Any] = ["first", 5, "three", "four"]
numList[1] = 2
//字典
var info : [String: Any] = [
    "age": 18,
    "name": "tony",
]
info["tall"] = "180"
2.0 控制流:

if控制流 ,if条件必须是一个布尔值,
 

//if控制流
var score = 90
if score >= 90 {
    score += 10
}else {
    score -= 10
}
print(score)

运行效果
 

有时候条件的值有可能是缺失值,这时可以在类型后面加一个问号(?)来标记这个变量的值是可选的,使用let出来缺失的情况,如下
​​​​​​​

//有值的时候
var youname :String? = "美女"
//缺失值
//var youname :String?
if let name = youname{
    print("有值, \(name)")
}else{
    print("没有值")
}

如果变量的可选值是 nil,条件会判断为 false,大括号中的代码会被跳过。如果不是 nil,会将值解包并赋给 let 后面的常量,这样代码块中就可以使用这个值了。


2.1使用 ?? 操作符来提供一个默认值
如果可选值缺失的话,可以使用默认值来代替。
 

let str1 : String? = nil
let str2 : String = "我是替换值"
let str3 = str1 ?? str2
//str1是nil值,??是缺失判断赋值默认值

运行结果

2.2Switch语句: 
switch判断语句。case中使用let匹配等式赋值,相比于oc语言,这里的case块中不需要break;


let items = ["apple", "green pepper", "red pepper", "banana"]
for item in items {
    switch item {
    case let x where x.hasSuffix("pepper"):
        print("\(x) is a type of pepper!")
    default:
        print("\(item) is not a pepper.")
    }
}

2.3 for in​​​​​​​

for-in 循环用于遍历集合、范围、字符串或自定义对象。以下是一些 for-in 循环的常见使用示例。

示例 1: 遍历数组

let names = ["Alice", "Bob", "Charlie"] 
for name in names {
    print("Hello, \(name)!")
}

示例 2: 遍历字典

字典的 for-in 循环会返回每个键值对,作为 (key, value) 的元组。

let ages = ["Alice": 25, "Bob": 30, "Charlie": 35] 
for (name, age) in ages { 
    print("\(name) is \(age) years old.") 
}

示例 3: 遍历范围

for-in 还可以用于整数范围。

for i in 1...5 { 
    print(i) 
}

示例 4: 遍历字符串的字符

可以逐字符遍历字符串。

let message = "Hello" 
for char in message { 
    print(char) 
}

示例 5: 使用 _ 忽略循环变量

如果不需要使用循环中的变量,可以用 _ 代替:

for _ in 1...3 { 
    print("Hello!") 
}

示例 6: for-in 与 where 条件配合

可以在 for-in 循环中使用 where 来过滤值。

let numbers = [10, 15, 20, 25, 30] 
for number in numbers where number > 20 { 
    print(number) 
}

2.4While​​​​​​​

示例 1: 基本 while 循环

while 循环会在条件为 true 时反复执行代码。
​​​​​​​

var count = 1
while count <= 5 {
    print("Count is \(count)")
    count += 1
}

示例 2: 使用 repeat-while 循环

repeat-while 循环至少会执行一次,因为条件是在执行代码块之后检查的。

var count = 1
repeat {
    print("Count is \(count)")
    count += 1
} while count <= 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912198.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

技术领导者的道与术:从领导者到领导力

目录标题 领导者现实看起来是这样技术领导者不应该和个人坐在一起技术领导力仍然是必须的从技术领导到技术领导力小结领导者 你可能想成为或者已经是一位技术领导者,估计你现在心里想成为超级英雄的想法正在爆棚。 你是Java、JavaScript、Angular等技术的专家,公司的项目代…

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…

【实战篇P2-5】手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第五节-编写Android手机APP程序实现接入原子云服务器

使用的开发软件是Android studio Android SDK(运行环境 :最低版本 21(Android 5.0) 最高版本 29 (Android 9.0) Gradle 版本 :4.6 根据源码,可自定义修改界面,修改名称,根据需求自定义数据展示界面等,修改app图标及名称等。 目录 Android程序设计 Android…

华为私有接口类型hybrid

华为私有接口类型hybrid Tip&#xff1a;hybrid类型&#xff0c;简称混合型接口。 本次实验模拟2层网络下 vlan10 vlan20 不能互访&#xff0c;vlan10 vlan20 同时可以访问vlan100 sw1配置如下&#xff1a; <Huawei>sy [Huawei]sys sw1 [sw1]vl ba 10 20 100 [sw1]int…

在 .NET 6.0 中创建用于 CRUD 操作的 Web API

快速概述&#xff1a; 在动态的技术世界中&#xff0c;创建强大的 Web API 已成为开发人员不可或缺的关键技能。这些 API 是促进不同应用程序之间顺畅通信的重要链接&#xff0c;可实现无缝数据检索和操作。本文的重点是在 .NET 6 中为 CRUD 操作创建 Web API。 为了实现这一点…

YOLOPv2论文翻译

YOLOPv2: Better, Faster, Stronger for Panoptic Driving Perception 摘要 在过去的十年中&#xff0c;多任务学习方法在解决全景驾驶感知问题方面取得了令人鼓舞的成果&#xff0c;既提供了高精度又具备高效能的性能。在设计用于实时实际自动驾驶系统的网络时&#xff0c;这…

使用GitHub Actions实现CI/CD流程

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用GitHub Actions实现CI/CD流程 GitHub Actions 简介 创建仓库 配置工作流 示例工作流文件 触发和运行工作流 部署应用 最佳实…

【C++练习】使用海伦公式计算三角形面积

编写并调试一个计算三角形面积的程序 要求&#xff1a; 使用海伦公式&#xff08;Herons Formula&#xff09;来计算三角形的面积。程序需要从用户那里输入三角形的三边长&#xff08;实数类型&#xff09;。输出计算得到的三角形面积&#xff0c;结果保留默认精度。提示用户…

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑

【服务器】使用命令行文本编辑器&#xff08;如 vim、nano 或 vi&#xff09;创建文件并编辑 准备&#xff1a;连接至服务器&#xff08;如ssh&#xff09;创建 .ncl 文件方法 1: 使用 vim 创建 .ncl 文件方法 2: 使用 nano 创建 .ncl 文件确认文件已创建运行 .ncl 文件 总结参…

负载均衡式在线oj项目开发文档(个人项目)

项目目标 需要使用的技术栈&#xff1a; 这个项目共分成三个模块第一个模块为公共的模块&#xff0c;用于解决字符串处理&#xff0c;文件操作&#xff0c;网络连接等等的问题。 第二个模块是一个编译运行的模块&#xff0c;这个模块的主要功能就是将用户的代码收集上来之后要…

区块链技术在数字版权管理中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 引言 区块链技术概述 …

数据编排与ETL有什么关系?

数据编排作为近期比较有热度的一个话题&#xff0c;讨论度比较高&#xff0c;同时数据编排的出现也暗示着数字化进程的自动化发展。在谈及数据编排时&#xff0c;通常也会谈到ETL&#xff0c;这两个东西有相似点也有不同点。 数据编排和ETL&#xff08;提取、转换、加载&#x…

test 是 JavaScript 中正则表达式对象 (RegExp) 的一种方法,用于测试一个字符串是否匹配某个正则表达式

在你的代码中&#xff0c;test 方法用于验证扫描结果是否符合特定的格式要求。具体来说&#xff0c;/^[A-Za-z\d]{16}$/.test(res.result) 这一行代码用于检查扫描结果 res.result 是否是一个由16个字母或数字组成的字符串。 test 方法的作用 正则表达式匹配&#xff1a; ^ 表…

鸿蒙开发:ArkTS如何读取图片资源

ArkTS在TS的基础上主要扩展了声明式UI能力&#xff0c;简化了构建和更新UI的过程。开发者可以以声明式的方式来描述UI的结构&#xff0c;如使用build方法中的代码块。同时&#xff0c;ArkTS提供了自定义组件、系统组件、属性方法、事件方法等&#xff0c;以构建应用UI界面。今天…

外贸管理利器7选,助力高效办公

推荐7款外贸管理软件&#xff0c;包括ZohoBooks、ZohoCRM、富通天下等&#xff0c;各具特色&#xff0c;满足外贸企业不同需求&#xff0c;提高管理效率&#xff0c;助力企业全球化竞争。、 一、Zoho Books Zoho Books是一款外贸财务管理软件&#xff0c;不仅为用户提供了一个…

Powerfx日期的設定

踏入2024年年尾 &#xff0c;即將開始2025年 &#xff0c; 很多事又到了一個新的開始&#xff0c;我們的Microsoft windows 也一樣&#xff0c;就是要對Windows 10說再見&#xff0c;踏入Windows 11&#xff0c;對大多數用戶來說Windows 11既很接近又很遙遠&#xff1b;這是因為…

单应用系统规划Node(节点)、Menu(菜单) 和 User(用户)之间关系

标题中的内容涉及到了系统设计中的权限管理和功能模块化。 通过设计一个 Node 系统 来实现更灵活、更安全的权限控制。Node 更像是一个概念&#xff0c;但在实际应用中&#xff0c;它可以具象化为数据库中的表结构&#xff0c;进而与 Menu 和 User 权限系统关联起来。 Node 系统…

Node.js——fs模块-文件重命名和移动

1、在Node.js中&#xff0c;我们可以使用 rename 或 renameSync 来移动或重命名文件或文件夹 2、语法&#xff1a; fs.rename(oldPath,newPath,callback) fs.renameSync(oldPath,newPath) 参数说明&#xff1a; oldPath 文件当前的路径 newPath 文件新的路径 callback 操…

MySQL性能测试方案设计

在现代互联网系统中&#xff0c;数据库性能直接影响到整体应用的速度和用户体验。而MySQL作为广泛使用的关系型数据库&#xff0c;随着数据量和并发请求的增长&#xff0c;其性能问题也日益突出。今天我们将深入探讨如何设计一套高效的MySQL性能测试方案&#xff0c;帮助你精准…

[Linux]:高级IO

1. IO 理解 1.1 IO 的基本概念 I/O即输入/输出&#xff08;input/output&#xff09;&#xff0c;是计算机系统中极为关键的操作环节。 在经典的冯诺依曼体系结构框架下&#xff0c;其核心在于数据的传输流向界定了输入与输出的概念。具体而言&#xff0c;当把数据从诸如键盘…