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

  1. key-value(键值对形式)
var MyHash=["Kobe":24,"Curry":30
]

元素的访问必须是用键的形式例如:MyHash[“Kobe”],才能访问到里面的值。1

  1. 它是无序状态

    也就是对hashmap追加元素的时候,他是随机加入,你不信的话,可以运行这段代码试试
var myhash=["Kobe":24,"Lebron":6,"Curry":30
]print(myhash)
print(myhash["Kobe"])//对元素进行访问
myhash["kyrie"]=11//追加元素,默认加在首位
myhash["paul"]=3
print(myhash)

跑出来你会发现后面追加的元素kyriepaul位置在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)相关推荐

  1. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  2. python 基础语法学习笔记(2019年4月第二周学习笔记)

    python day01 2019.4.8 计算机基础,python 变量 1.随机存储器就是内存:断电数据丢失,读写速度快 2.外存储器,硬盘,断电数据依然保存,缺点,读写速度慢 3.操作系统是什么 ...

  3. 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定

    四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...

  4. python入门之基础语法学习笔记

    Python 中文编码 Python 文件中如果未指定编码,在执行过程会出现报错: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决 ...

  5. Swift基本语法学习笔记

    Swift与OC的不同点 导入框架的方式 OC使用#import <UIKit/UIKit.h> Swift使用import UIKit 定义标识符的方式 Swift中定义标识符,必须指定 ...

  6. 一、Vue基础语法学习笔记系列——插值操作(Mustache语法、v-once、v-html、v-text、v-pre、v-cloak)、绑定属性v-bind(绑定class、style)、计算属性

    一.插值操作 1. Mustache 如何将data中的文本数据,插入到HTML中呢? 我们已经学习过了,可以通过Mustache语法(也就是双大括号). Mustache: 胡子/胡须. 我们可以像 ...

  7. pyton基础语法学习笔记一

    一.pyton语言简介 1.解释型语言 2.交互式语言 3.面向对象 4.适合初学者 二.pyton语言特点 1.易于学习: 2.易于阅读: 3.易于维护: 4.一个广泛的标准库: 5.互动模式: 6 ...

  8. python3语法 余数不等于0_python 基础语法学习笔记 0-3

    一.最基本的一条代码 1. print()函数 print()函数由两部分构成: 指令:print; 指令的执行对象:在print 后面的括号里的内容 2. 引号的用法 单引号和双引号都可以使用,但需 ...

  9. python语言入门n-Python基础语法学习笔记

    一.内存管理 变量在动态语言中,无须事先声明,也不需要制定类型: 编程中一般无须关心变量的存亡,也不需要关心内存的管理: Python使用"引用计数"记录所有对象的引用数 当对象引 ...

最新文章

  1. 52 JavaScript中的正则表达式
  2. 一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法
  3. 《大话数据结构》读书笔记-串
  4. delphi中TStringGrid数据的导出
  5. 美国款游戏计算机,美国一程序员设计计算机游戏 悼念早逝爱子(图)
  6. 【华为云技术分享】华为云MySQL新增MDL锁视图特性,快速定位元数据锁问题
  7. STM32工作笔记0092---CAN通信基础知识介绍-M3
  8. linux目录存 xml文件,将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹...
  9. 老毛子 安装 mysql_老毛子固件mysql启动失败的解决方法
  10. TinyGPS使用说明
  11. 纳兰容若最经典的20首诗词,每一首都是经典,读完眼泪掉下来
  12. position: relative相对定位
  13. 软件测试人员常用的sql语句(四)
  14. 【macOS免费软件推荐】第1期:MuseScore
  15. RDKit|通过Recap和BRICS对分子拆解与合成
  16. 电脑怎么实现长截图、滚动截图?亲测三款好用软件,附图文教程
  17. counter-reset
  18. 千万级巨型汉语词库分享
  19. MATLAB光谱特征波长提取,uve算法提取光谱特征波长
  20. 基于阿里云ECS搭建云上博客!超详细图文步骤!

热门文章

  1. 英文学习20180417
  2. 收音机主页网站服务器列表,谁有收音机频道列表,要山东的,越详细越好
  3. 收音机c语言程序,基于51单片机的数字FM调频收音机的设计(附接线图,主程序代码)...
  4. js中Array.prototype.find() 方法在对象数组上无效果,捉急。。。
  5. Hough(matlab)
  6. 《痞子衡嵌入式半月刊》 第 26 期
  7. SOLIDWORKS打包时缺失部分工程图解决方法
  8. 如果把微信和支付宝比作钱包,那么数字人民币对应的是钱包中的内容
  9. RISC-V生态架构浅析(认识RISC-V)
  10. 一个秒杀系统的设计思考(整体思考,收藏了)