Swift基础语法学习笔记(1)
Swift基础语法的学习
- 1.HashMap
- 2.for-in循环控制
- 3.??聚合运算
- 4.SwiftUI的一些小技巧
- 5.init初始化器
- 6.@propertyWrapper属性包装器
- 音乐评分
- 7.数据绑定@state
- 8.传递数据结构 @binding
- 9.获取系统数据
- 关键字:@Environment
- 10.swift UI 中toggle开关按钮
1.HashMap
- key-value(键值对形式)
var MyHash=["Kobe":24,"Curry":30
]
元素的访问必须是用键的形式例如:MyHash[“Kobe”],才能访问到里面的值。1
- 它是无序状态
也就是对hashmap追加元素的时候,他是随机加入,你不信的话,可以运行这段代码试试
var myhash=["Kobe":24,"Lebron":6,"Curry":30
]print(myhash)
print(myhash["Kobe"])//对元素进行访问
myhash["kyrie"]=11//追加元素,默认加在首位
myhash["paul"]=3
print(myhash)
跑出来你会发现后面追加的元素kyrie和paul的位置在hashmap的位置是随机的
2.for-in循环控制
for 变量 in 循环的范围,比如:
for socce in 1…10{ }
- 1 … 10--------[1,10]
- 1 …<10--------[1,10)
用for-in循环来跑我们上节学的hashmap
var myhash=[ "Kobe":25,"Lebron":18,"Curry":24
]
for socre in myhash{ if(socre.value>20){print(socre.key + "get hot") }else{ print(socre.key+ "feel bad")}
}
3.??聚合运算
最近在玩仙剑七
借几个他的招式玩玩,哈哈哈
var str1:String?="万木逢春" //string?表示str变量可以为空var str2:String="万剑诛邪"print( "修吾现在可用的招式为:" + (str1 ?? str2))str1 = nil //这一步把他设为空print( "修吾现在可用的招式为:" + (str1 ?? str2))
来看看输出结果
4.SwiftUI的一些小技巧
5.init初始化器
官方文档
格式:init(标签名字 参数名字:参数的类型){ }
struct Celsius {var temperatureInCelsius: Doubleinit(fromFahrenheit fahrenheit: Double) {temperatureInCelsius = (fahrenheit - 32.0) / 1.8}init(fromKelvin kelvin: Double) {temperatureInCelsius = kelvin - 273.15}
}
let boilingPointOfWater = Celsius(fromFahrenheit: 212.0)
// boilingPointOfWater.temperatureInCelsius is 100.0
let freezingPointOfWater = Celsius(fromKelvin: 273.15)
// freezingPointOfWater.temperatureInCelsius is 0.0
6.@propertyWrapper属性包装器
音乐评分
,来得到用户对某首音乐的喜欢程度
评分细则是:1-10之间打分,小于1则返回1,大于10则得到结果10
@propertyWrapperstruct number {private var RequestNumber: Int = 0var wrappedValue: Int {get {return self.RequestNumber;}set (value) {if value < 1 {self.RequestNumber=1;} else if value > 10 {self.RequestNumber=10} else {self.RequestNumber=value;}}}init(wrappedValue initValue:Int){self.wrappedValue=initValue;}
}struct player{@number var pingfen01:Int;@number var pingfen02:Int;@number var pingfen03:Int;init(getpingfen01:Int,getpingfen02:Int,getpingfen03:Int){self.pingfen01=getpingfen01;self.pingfen02=getpingfen02;self.pingfen03=getpingfen03;}}let core:player=player(getpingfen01: -1, getpingfen02: 4, getpingfen03: 20);print(core.pingfen01);
print(core.pingfen02);
print(core.pingfen03);
7.数据绑定@state
1.创建一个标题
2.一个输入框
3.一个按钮
实现:输入框输入内容后,点击提交按钮改变标题
struct ContentView: View {@State private var inputDate:String="";@State private var Mytitle:String="Ethan"var body: some View {VStack{Text(Mytitle).padding().font(.title)//双向传递TextField("请输入内容",text: self.$inputDate).padding(10).font(.largeTitle).frame(width: UIScreen.main.bounds.width-20, height: 80, alignment: .center).textFieldStyle(.roundedBorder)Spacer()Button(action: {Mytitle=self.inputDate; }, label: {Text("提交").font(.largeTitle).padding().background(.blue).foregroundColor(.white).cornerRadius(10) })}}
}
我们得到的结果是:
8.传递数据结构 @binding
struct otherTitle:View{var counter:Int=0@Binding var title:Stringinit(title:Binding<String>){self._title=title;let sentence=self._title.wrappedValueself.counter=sentence.count;}var body: some View{Text(self.title+"/\(self.counter)")}}struct ContentView: View {@State private var title:String="数据绑定测试用例"var body: some View {VStack{Text(title).padding().font(.title)otherTitle(title: self.$title)Button(action: {self.title="欢迎更换标题"}, label: {Text("提交").padding(20).background(.blue).foregroundColor(.white).cornerRadius(10)})}}
}
9.获取系统数据
关键字:@Environment
1.获取系统亮度模式,比如是黑夜模式还是白昼模式
struct ContentView: View {@Environment(\.colorScheme) var modelvar body: some View {VStack{Text("系统的颜色模式为:\(model == .dark ? "暗黑模式" : "白昼模式") ").cornerRadius(20).font(.title).background(model == .dark ? Color.green : Color.blue).foregroundColor(model == .dark ? Color.white : Color.yellow)}}
}
运行结果:
10.swift UI 中toggle开关按钮
Toggle可以用来跟被绑定的值
通过按钮选择状态
关闭状态
打开状态
附上代码
Swift基础语法学习笔记(1)相关推荐
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- python 基础语法学习笔记(2019年4月第二周学习笔记)
python day01 2019.4.8 计算机基础,python 变量 1.随机存储器就是内存:断电数据丢失,读写速度快 2.外存储器,硬盘,断电数据依然保存,缺点,读写速度慢 3.操作系统是什么 ...
- 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定
四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...
- python入门之基础语法学习笔记
Python 中文编码 Python 文件中如果未指定编码,在执行过程会出现报错: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决 ...
- Swift基本语法学习笔记
Swift与OC的不同点 导入框架的方式 OC使用#import <UIKit/UIKit.h> Swift使用import UIKit 定义标识符的方式 Swift中定义标识符,必须指定 ...
- 一、Vue基础语法学习笔记系列——插值操作(Mustache语法、v-once、v-html、v-text、v-pre、v-cloak)、绑定属性v-bind(绑定class、style)、计算属性
一.插值操作 1. Mustache 如何将data中的文本数据,插入到HTML中呢? 我们已经学习过了,可以通过Mustache语法(也就是双大括号). Mustache: 胡子/胡须. 我们可以像 ...
- pyton基础语法学习笔记一
一.pyton语言简介 1.解释型语言 2.交互式语言 3.面向对象 4.适合初学者 二.pyton语言特点 1.易于学习: 2.易于阅读: 3.易于维护: 4.一个广泛的标准库: 5.互动模式: 6 ...
- python3语法 余数不等于0_python 基础语法学习笔记 0-3
一.最基本的一条代码 1. print()函数 print()函数由两部分构成: 指令:print; 指令的执行对象:在print 后面的括号里的内容 2. 引号的用法 单引号和双引号都可以使用,但需 ...
- python语言入门n-Python基础语法学习笔记
一.内存管理 变量在动态语言中,无须事先声明,也不需要制定类型: 编程中一般无须关心变量的存亡,也不需要关心内存的管理: Python使用"引用计数"记录所有对象的引用数 当对象引 ...
最新文章
- 52 JavaScript中的正则表达式
- 一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法
- 《大话数据结构》读书笔记-串
- delphi中TStringGrid数据的导出
- 美国款游戏计算机,美国一程序员设计计算机游戏 悼念早逝爱子(图)
- 【华为云技术分享】华为云MySQL新增MDL锁视图特性,快速定位元数据锁问题
- STM32工作笔记0092---CAN通信基础知识介绍-M3
- linux目录存 xml文件,将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹...
- 老毛子 安装 mysql_老毛子固件mysql启动失败的解决方法
- TinyGPS使用说明
- 纳兰容若最经典的20首诗词,每一首都是经典,读完眼泪掉下来
- position: relative相对定位
- 软件测试人员常用的sql语句(四)
- 【macOS免费软件推荐】第1期:MuseScore
- RDKit|通过Recap和BRICS对分子拆解与合成
- 电脑怎么实现长截图、滚动截图?亲测三款好用软件,附图文教程
- counter-reset
- 千万级巨型汉语词库分享
- MATLAB光谱特征波长提取,uve算法提取光谱特征波长
- 基于阿里云ECS搭建云上博客!超详细图文步骤!
热门文章
- 英文学习20180417
- 收音机主页网站服务器列表,谁有收音机频道列表,要山东的,越详细越好
- 收音机c语言程序,基于51单片机的数字FM调频收音机的设计(附接线图,主程序代码)...
- js中Array.prototype.find() 方法在对象数组上无效果,捉急。。。
- Hough(matlab)
- 《痞子衡嵌入式半月刊》 第 26 期
- SOLIDWORKS打包时缺失部分工程图解决方法
- 如果把微信和支付宝比作钱包,那么数字人民币对应的是钱包中的内容
- RISC-V生态架构浅析(认识RISC-V)
- 一个秒杀系统的设计思考(整体思考,收藏了)