swift 第一课 基础知识-1
1. 基本的打印:
print("这是学习 swift 的第一课") var varA = 1 print("a 的值是 \(varA)") //注:字符串打印参数时,参数是这样的 \(参数)
2. var 变量 , let 常量:
2.1 使用类型推断,计算机自己判断类型
var a = 1 // (Int 类型) var b = 1.0//(Double 类型) let c = "创建个字符串,怎么样" //(String 类型) //注:var 定义的是变量 :值是可以修改的 a = 2 //(不会报错) c = "修改下字符串" //(报错 这个值 是不可以修改的)
2.2 自己规定类型
var intA :Int = 5 let string :String = "常量的字符串"
3. 控制语句:
let score = 60 //及格分数 let scoreArr = [91,93,12,14,47,67,98] // 分数的数组 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 0...count-1{ print("分数是 \(scoreArr[i])") judge(sco: scoreArr[i]) } for j in 0..<count{ print("分数是 \(scoreArr[j])") judge(sco: scoreArr[j]) } //while 循环的遍历: var index = 0 while index < count { judge(sco: scoreArr[index]) index += 1 }
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 += 5 } add() return v1 } // 调用: let result = self.addParement(parement: 10) func funcPointer( isBool : Bool ) ->( (Int) -> Int) { //返回 函数指针 func addOne( num:Int ) -> Int{ return num+1; } func subtractOne( num:Int ) ->Int { return num-1; } if isBool { return addOne } return subtractOne } // 调用: let resultPinter = self.funcPointer(isBool: false) let resu = resultPinter(5) 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 < 60 { return true }else{ return false } } // 调用: if self.hasAnyMatch(arr: scoreArr, condition: lessThanSixty) {//把lessThanSixty //这个函数名字 当做参数 传入方法 print("含有不及格的") }else{ print("都是及格的") }
5.基本数据类型:
var p1 = 100; // 字符串: let p2 = "value is " + String(p1) //这里包换一个强转的方法 print("p1 is: \(p1),p2 is: \(p2)") // 数组 : var p3 = ["ios","andriod","symbian"] print("p3 is: \(p3)") p3[0] = "ios/swift" //修改数组元素 print("p3 is: \(p3)") p3.append("ios/oc")// 末尾添加元素 p3.insert("windows phone", at: 0)// 指定位置添加元素 print("p3 is \(p3)" p3.removeFirst()//删除元素 p3.removeAll()//删除元素 print("p3 is \(p3)") //字典: var p4 :Dictionary = [ "name":"Bob", "age":28, "professional":"计算机开发" ] as [String : Any] for (key,value) in p4 { print("key is:\(key),value is:\(value)") } p4["score"] = 100;//添加 let p5 = p4.keys for key in p5{ print("\(key) = \(p4[key])") } //元祖: let http404Error = (404, "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 = [20,30,23,34,5,54,55,6,53,4] var v2 = hasConnditionMatch(arr: arr,value: 40,conndition: { (num:Int,value:Int)->Bool in return num>value; }); print("v2 value is:\(v2)") var v3 = hasConnditionMatch(arr: arr,value: 60,conndition: { return $0 > $1; }); 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 = 0; var y = 0; }; var point1 = point(x:100,y:200) print("point1 \(point1.x) \(point1.y)")
结束语:
学习 swift 的第一天 ,没有接触太深入的东东,自学从最简单的开始,会坚持