Swift语言学习---------初级
一.声明变量和常量
示例代码:
//1.定义常量(let)和变量(var)
let myGender = "男🐲🐵🍑"
print(myGender)
//myGender = "nv" //因为myGender是常量
//2.定义变量
var carName = "保时捷"
carName = "宾利"
//定义变量年龄
var age = 20
//swift 定义的变量或者常量的时候,需要标记出变量或者常量的类型,如果不标识,会自动根据初始值自动推断
let name = "jack" //会自动推断为string, 有后面到的值来决定name的类型
let name1:String = "1jack" //由前面的类型string,决定后面的赋什么的值,即后面的值要与string一致
//注意如果用let修饰必须赋初值,如果用var修饰可以不赋初值
//let age1:Int = 3
var age1:Int? //"?"问号表示当前为可选类型 表示前面的初值可以为空
print(age1)
//定义一个字符类型的变量
var char:Character = "A" //此时char就是一个字符,切记其值也用""的,只能用一个字符
//定义一个Bool类型到的变量(值只有ture和flase)
var flag:Bool = true
/**********字符串String************/
//创建一个空字符串变量
var str_empty = ""
//通过字符串对象的isEmpty方法判断是否为空
if str_empty.isEmpty{
//if 后面的判断条件的返回值必须是Bool类型
print("str_empty is empty")
}
//(3).字符串的拼接
var str_url = "http:\\\\" //转义字符'\\'会转义为一个'\'
var str = "www.lanou3g.com"
let urlString = str_url + str
print(urlString)
print("蓝鸥官网:\(urlString)\n") //插入式取值 \(变量名)
//(4).获取字符串的长度
var str2 = "abc"
//print(str2.characters.count)
//(5).字符串差值 (不能一是转化,不能自动转化类型,必须手动转化)
let mul = 4
let content = "\(mul)*2.5 = \(Float(mul)*2.5)"
print(content)
//(6).字符串的比较
let str3 = "xiaoxiao"
let str4 = "lanou"
if str3 == str4 {
print("相等")
} else {
print("不相等")
}
二.数组和字典
示例代码:
//数组(Array)**********************************************
//swift中数组里面存储的所有数据 都必须是同一类型的
//定义一个数组变量
var nameArray = ["张三","李四","王五"]
var nameArray1:Array<String> = ["张三","李四","王五"]
//创建一个字符串型空数组
let array = Array<String>()
//创建一个整型空数组
var int_arr = [Int]()
//访问数组中某个元素
print(nameArray[0])
print("第二个元素\(nameArray[1])")
print(nameArray[1])
//向数组中添加元素
var int_arr1 = [Int]()
int_arr1.append(10)
int_arr1.append(20)
print(int_arr1)
//在数组中某个位置插入元素
int_arr1.insert(15, atIndex: 1)
print(int_arr1)
//删除数组中某个位置上的元素
int_arr1.removeAtIndex(2)
//移除数组中的所有元素
int_arr1.removeAll()
print(int_arr1)
//字(字典是无序的)*************************************************
//1.字典 (键值对) 定义一个字典变量
var dictionary : Dictionary<Int, Int> = [20 : 10]
var dictionary1 : Dictionary<String, Int> = ["a": 10,"b":20]
print(dictionary1)
//定义一个可变空字典变量
var dictionary2:Dictionary<String,Int> = [:]
//定义一个可变空字典变量
var dictionary3 = Dictionary<String,Int>()
//在字典中添加一个键值对
dictionary1["c"] = 30
print(dictionary1)
//在字典中修改一个键值对的值
dictionary1["a"] = 40
print(dictionary1)
print(dictionary1["a"])
//删除字典中的一个键值对
dictionary1.removeValueForKey("a")
print(dictionary1)
三.元组
示例代码:
//经常用,熟练掌握
//元组********************************************
//元组是Swift里面独有的一种数据格式(对比OC)。是 一个可以返回多个值的格式。在Swift面声明的时候使用 ()声明。
//元组中可以存放多种类型的值,而且存放的个数可以多个
//定义一个元组变量
let status = ("蓝鸥1班",["ios,Android,Html5"])
let statu : (classroom:String,lesson:Array) = ("蓝鸥1班",["ios,Android,Html5"])
print(statu)
//访问元组中某个元素
//1.元素较少时,通过下标
print(statu.1)
//2.元素过多,使用标记名称取值
print(statu.classroom)
四.循环结构和分支结构
示例代码:
//for循环 *******************************************
//第一种形式
for var i = 1; i<10; i++ {
print(i)
}
//第二种形式
for i in 1..<10 {
print(i)
}
//第三种形式
for a in 1...10 {
print(a)
}
//while循环******************************************
var number = 5
while number > 1 {
number--
print(number)
}
//repaet ...while
repeat {
print("hello")
} while false
//使用for循环遍历数组
var animaelArray = ["dog","cat","tiger","pig"]
for b in animaelArray{
print(b)
}
//for ...in...遍历字典
let animals2 = ["dog":"🐶","cat":"🐱"]
for (key,value)in animals2{
print("key = \(key) value:\(value)")
}
//if分支结构
//if .....else...可以省略小括号
let cool = false
if cool == true {
print("好酷!")
} else {
print("一点也不酷")
}
//switch 分支结构
//特点一: switch中实现贯穿,使用关键字fallthrough
let bajieage = 20
switch bajieage {
case 0:
print("0")
fallthrough
case 10:
print("10")
fallthrough
default:
print("other")
}
//特点二:case后面可以是一个范围
switch bajieage{
case 0..<10:
print("范围在0..<10")
case 10...100:
print("范围在10...100")
default:
print("other")
}
//特点三:case后面可以定义一个变量 关键字:where 并且可以声明变量获取值 where后面定义的是定义这个变量需要满足的条件
switch bajieage {
case var i where bajieage > 0 && bajieage < 10:
i = 20
print(i)
default:
print("other")
}
//特点四:switch ...case...可以匹配一个元组
//关键字是元组,同样可以在分⽀支中进⾏行判断
//"_",代表忽略
//定义一个元组
let point = (10,10)
switch point {
case (_,10): //"_"代表忽略
print("case1")
case (10,0):
print("case2")
case (10,10):
print("case3")
default:
print("case4")
}
五.枚举
示例代码:
//枚举(enum)********************************************
//原始值是int类型
enum direction: Int {
case East = 0
case South
case Weast
case North
}
let d1 = direction.East
print(d1.rawValue)
//原始类型是string类型
enum Season:String {
case Spring = "春天"
case Summer = "夏天"
}
print(Season.Summer.rawValue)
//定义一个枚举类型的变量
//使用原始值来创建变量
//通过原始值为2 获取原始值为2的枚举成员
//dir 类型为direction? 值为direction.north
let dir = direction(rawValue: 1) //表示取的是原始值为1的那个元素
dir?.rawValue //可选类型
print(dir)
print(direction.South.rawValue)
六.函数
示例代码:
//函数**********************************************
//表示函数的关键字 func (函数变量)
//函数的类型分为4种
//1.无返回值 无参数
func function1() -> Void{
print("无返回值无参")
}
function1()
//2.无返回值有参 此时str为内部参数名,仅供函数内部使用
func function2(name str:String) ->Void {
//name为外部参数名 用来给用户进行提示
//注意:内部参数名必须要有
print(str)
}
//function2("lanou")
function2(name: "lanou")
//3.有返回值无参
func function3() -> String{
return "hallo"
}
let string = function3()
print(string)
//4.有返回值有参
func function4(a:Int ,b:Int) ->Int{
return a+b
}
let result = function4(3, b: 4)
print(result)
//5.函数的返回值为元组类型
//利用元组实现函数返回多个值
//"_"忽略外部参数名
func sumMulMinuse(a:Int,_ b:Int) ->(Int,Int,Int){
return (a+b,a*b,a-b)
}
//调用函数
let res = sumMulMinuse(5, 2)
print(res)
//函数嵌套
func test1(){
func test2(){
func test3(){
print("test3")
}
test3()
print("test2")
}
test2()
print("test1")
}
//调用
test1()