swift 第一课 基础知识-1
1. 基本的打印:
print("这是学习 swift 的第一课")
var varA =
print("a 的值是 \(varA)")
//注:字符串打印参数时,参数是这样的 \(参数)
2. var 变量 , let 常量:
2.1 使用类型推断,计算机自己判断类型
var a = // (Int 类型) var b = 1.0//(Double 类型) let c = "创建个字符串,怎么样" //(String 类型) //注:var 定义的是变量 :值是可以修改的 a = //(不会报错) c = "修改下字符串" //(报错 这个值 是不可以修改的)
2.2 自己规定类型
var intA :Int = let string :String = "常量的字符串"
3. 控制语句:
let score = //及格分数 let scoreArr = [,,,,,,] // 分数的数组 let count = scoreArr.count
3.1 判断是否及格
func judge(sco:Int){
if sco < score {
print("不合格分数是 \(sco)")
}
}
//或者使用简单的switch 语句 可以更细致分析分数
func judge(sco:Int){
let pass = (sco > score)
switch pass {
case true:
print("及格的分数是 \(sco)")
// fallthrough; // 贯穿效果的语句 ,这里暂时不使用
default:
print("不及格的分数是 \(sco)")
}
}
3.2 遍历数组的元素的几种方法
//for 循环的遍历:
for s in scoreArr {
print("分数是 \(s)")
judge(sco: s)
}
for i in ...count-{
print("分数是 \(scoreArr[i])")
judge(sco: scoreArr[i])
}
for j in ..<count{
print("分数是 \(scoreArr[j])")
judge(sco: scoreArr[j])
}
//while 循环的遍历:
var index =
while index < count {
judge(sco: scoreArr[index])
index +=
}
4. 函数的定义和使用:
func testConnect(v1:String, v2:String) -> String {//有参数 又返回值
return v1 + " " + v2;
}
// 调用:
var connectString = self.testConnect(v1: "hello", v2: "world")
print("connect string is \(connectString)")
func testLog(){//无参数 无返回值
print ("log 成功")
}
// 调用:
self.testLog()
func logString(logString:String) {//有参数 无返回
print (logString)
}
// 调用:
self.logString(logString: "logSuccess")
func testBool() -> Bool {//无参数 有返回
return true
}
func testParement() -> (String,String,String) {//多个返回值
return ("parement1","parement2","parement3")
}
// 调用:
let (parement1,parement2,parement3) = self.testParement()
func addParement(parement : Int) -> Int {//函数中包含函数
var v1 = parement
func add(){//是一个函数
v1 +=
}
add()
return v1
}
// 调用:
let result = self.addParement(parement: )
func funcPointer( isBool : Bool ) ->( (Int) -> Int) { //返回 函数指针
func addOne( num:Int ) -> Int{
return num+;
}
func subtractOne( num:Int ) ->Int {
return num-;
}
if isBool {
return addOne
}
return subtractOne
}
// 调用:
let resultPinter = self.funcPointer(isBool: false)
let resu = resultPinter()
func hasAnyMatch(arr : Array<Int> ,condition:(Int) -> Bool) -> Bool {
for s in arr {
if condition(s) {
return true
}
}
return false
}
func lessThanSixty(s :Int) -> Bool {
if s < {
return true
}else{
return false
}
}
// 调用:
if self.hasAnyMatch(arr: scoreArr, condition: lessThanSixty) {//把lessThanSixty
//这个函数名字 当做参数 传入方法
print("含有不及格的")
}else{
print("都是及格的")
}
5.基本数据类型:
var p1 = ;
// 字符串:
let p2 = "value is " + String(p1) //这里包换一个强转的方法
print("p1 is: \(p1),p2 is: \(p2)")
// 数组 :
var p3 = ["ios","andriod","symbian"]
print("p3 is: \(p3)")
p3[] = "ios/swift" //修改数组元素
print("p3 is: \(p3)")
p3.append("ios/oc")// 末尾添加元素
p3.insert("windows phone", at: )// 指定位置添加元素
print("p3 is \(p3)"
p3.removeFirst()//删除元素
p3.removeAll()//删除元素
print("p3 is \(p3)")
//字典:
var p4 :Dictionary = [
"name":"Bob",
"age":,
"professional":"计算机开发"
] as [String : Any]
for (key,value) in p4 {
print("key is:\(key),value is:\(value)")
}
p4["score"] = ;//添加
let p5 = p4.keys
for key in p5{
print("\(key) = \(p4[key])")
}
//元祖:
let http404Error = (, "Not Found")
print("The status code is \(http404Error.0)")
6. 闭包:
// 方法 :
func hasConnditionMatch(arr:Array<Any>,value:Int,
conndition:(Int,Int)->Bool) -> Bool {
for item in arr{
if conndition(item as! Int,value){
return true;
}
}
return false;
}
// 调用:
var arr = [,,,,,,,,,]
var v2 = hasConnditionMatch(arr: arr,value: ,conndition: {
(num:Int,value:Int)->Bool in
return num>value;
});
print("v2 value is:\(v2)")
var v3 = hasConnditionMatch(arr: arr,value: ,conndition: {
return $ > $;
});
print("v3 value is:\(v3)")
//注:闭包 让各个函数之间的通信比较方便
7. 枚举
enum Direction{
case North,South,East,West
}
enum Direction1{
case North
case South
case East
case West
}
注 :这两种定义方式是一样的效果
var d1 = Direction.East
d1 = .West / /已经知道d1 是枚举的类型 ,所以可以直接使用 点语法
var d2 :Direction = .East
switch d1 {
case .East:print("指向东方")
case .West:print("指向西方")
case .North:print("指向北方")
case .South:print("指向南方")
default:
print("没有这个方向")
}
enum phoneType:Int{
case andriod = 0 ,ios ,windows,macOS
}
注: 枚举值是可以 有数值类型的
var type = phoneType.ios
let t = type.rawValue//找到是第几个枚举,枚举值 转化成 Int 值
print("raw value is :\(t)")
var type1 = phoneType.init(rawValue: 3)//获取对应的枚举, 把 Int 转化为 枚举
print("type1 is :\(type1)")
8.结构体:
struct point {
var x = ;
var y = ;
};
var point1 = point(x:,y:)
print("point1 \(point1.x) \(point1.y)")
结束语:
学习 swift 的第一天 ,没有接触太深入的东东,自学从最简单的开始,会坚持
swift 第一课 基础知识-1的更多相关文章
- HTML第一课——基础知识普及【1】
请关注公众号:自动化测试实战 HTML概念及编写规范 html叫做超本文标记语言,注意它知识标记语言,不是编程语言. 编写规范: 由标记(html, div, p, h1等)组成 标记成对出现(< ...
- HTML第一课——基础知识普及【2】
关注公众号:自动化测试实战 img标签 我们先看一下文档结构: 这里我们文件当前位置就是lesson.html,所以现在我们img属性src给的值要进入imgs文件夹,所以我们可以用相对路径来表示,看 ...
- python第一课--基础知识
python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的 ...
- IOS之swift第一课基础代码
import Foundation //import Foundation 导入模块,专业术语也是导入 包,库的 意思. var str = "Hello World" //声明一 ...
- Linux基础第一课——基础知识了解
前言 发展历史 linus 林纳斯 赫尔辛基大学 在自己的笔记本上安上自己写的操作系统 基于Linux内核 Linux内核 也是基于unix内核开发出来 unix 不开源 只能军方和大学使用 Linu ...
- swift 第二课 基础知识-2
setter 和getter 的使用--> 适合计算使用 struct Point { var x = 0.0, y=0.0 } struct Size { var width = 0.0, h ...
- wpf(第一章 基础知识)
wpf第一章基础知识:通过vs2015创建wpf程序会在引用里面多出3个核心程序集PresentationCore.PresentationFramework.WindowsBase.并且会在解决方案 ...
- 《openssl编程》:第一章基础知识
第一章 基础知识 1.1 对称算法 对称算法使用一个密钥.给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同.解密时,使用读密钥与加密密钥相同. 对称算法主要有四种加密模式: (1) 电子密码 ...
- Python第一章-基础知识
第一章:基础知识 1.1 安装python. 直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...
随机推荐
- Python基础之While循环
一.摘要 本片博文将介绍input()函数和while循环的使用 二.input()函数 函数input() 让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中,以 ...
- 一步步来用C语言来写python扩展
本文介绍如何用 C 语言来扩展 python.所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能.我在写... 本文介绍如何用 C 语言来扩展 ...
- 企业级分布式 HTAP 数据库管理系统 TBase
TBase 是腾讯数据平台团队在开源的 PostgreSQL 基础上研发的企业级分布式 HTAP 数据库管理系统: 具备高性能可扩展的分布式事务能力,支持 RC 和 RR 两种隔离级别: 通过安全.管 ...
- 利用 Label 小小的提升一下用户体验
label ,Html 标签里面很普通的一个,可是她却有一个很独特的作用,我不知道我是忘了她还是不曾记得她,下面简单介绍一下她. 一.定义和用法 <label> 标签为 input 元素定 ...
- 应用webservice实现公网天气查询
1. wsdl网址:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 2. URL:http://www.webxml.com.cn/zh ...
- Java+自动扫描文件夹+发送+上传
1.介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码. enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1. ...
- Codeforces 1180E Serge and Dining Room
题意: 有\(n\)个菜肴,有\(m\)个小朋友,每个菜肴的价格为\(a_i\),每个小朋友有\(b_i\)元钱,小朋友从\(1 \rightarrow m\)依次购买菜肴,当第\(i\)个小朋友轮到 ...
- 威尔逊定理x
威尔逊定理 在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于实际操 ...
- 在C语言中破坏函数调用堆栈
// 这段代码显示,在C语言修改函数的返回地址 int test1() { ; } int test2(int a) { *(&a-) = (int)test1; // 将返回地址修改为tes ...
- 经过测试,feign只能通过@RequestBody传对象参数
通过feign调用,使用ModelAttribute 注解,参数没法传到对应的server