swift01
//引入的时候没有双引号,也没有尖括号,直接写框架名
import Foundation
//输出函数
//字符串取消前面的@标记
//没有分号,分号是可选写入的
print("Hello, World!")
/*
Swift和OC的不同
1.类型推断,不需要指定变量的类型,swift相比OC最强大的地方在于编译器,Swift编译器是全类型编译器,在编译的时候就知道了所有的对象的类型,这是OC的动态编译所做不到的,这样做有一个好处,就是类型安全
2.Swift当中不能向nil发送消息
3.泛型 允许向Java那样将数据类型参数化.
4.字符串做了一些增强
5.switch语法做了精简,提供了范围限制
*/
//1.变量和常量的声明
let myGender = "男"//常量
var carName = "BMW"//变量
carName = "Audio"
//Swift中允许使用任何Unicode字符作为变量和常量的名字,包括哪些不在ACSII编码的字符(不过貌似然并卵)
let 李帅 = "呆萌2b"
let 😳 = "呵呵"
let 🐶 = "狗"
print(🐶)
var a = 10
var b = "A"
var c = 100.1
var d = 200.2
var e = c+d
var char = "A"//这样的创建的是字符变量,
//2.类型判断
//swift中定义变量和常量的时候,不需要标识出变量和常量的类型,系统会自动进行匹配补全,但是也可以进行手动指定
let name = "尚永超"//这里就会自动推断为String类型,是由后面的字符串推断出来的
let name1 : String = "西门庆"//这个常量就不会进行类型推断,因为已经显示的指定了常量的类型
//swift中(系统原生的)所有的类型都是首字母大写,剩下的小写
var age :Int = 20
var weight : Float = 130
var money : Double = 100000000
//不论是变量还是常量,要么赋初值,要么指定类型,要么指定为可选类型,要么指定类型并且赋初值,否则报错
//3.可选类型
//在Swift当中对象没有赋初值就没有起始值,没有值的量是不能使用的,会报错和警告,这个时候就需要可选类型,可选类型简单来说就可以理解为,允许为空
//将一个变量声明为可选类型?很简单,在最后面加一个?就可以了
//声明一个可选类型的字符串变量
var sex : String?
print(sex)
sex = "女"
print(sex)
print(sex!)//显示拆包,用!可以将可选类型中的数据拆解出来
//下面的代码因为不能为空又没有进行初始化,所以会报错
//var sex2 : String
//print(sex2)
//4.字符串
//(1).创建空的字符串
var str_empty :String = ""
var str_empty2 :String = String()
//(2).判断字符串是否为空
if str_empty.isEmpty{
print("字符串是空")
}
//(3).字符串拼接
var str1 = "lanou"
var str2 = "3g"
var str3 = "!!!"
var str4 = str1 + str2 + str3
print(str4)
//(4).字符串中间插入数值
//swift中占位符更改了,使用\()来进行变量和常量的取值
print("蓝鸥:\(str4)\n")
//(5).获取字符串长度
print(str4.characters.count)
//(6).字符串等值判断
if str1 != str2{
print("两个字符串不相等")
}
//5.(隐式类型转换)
//swift里面没有隐式类型转换,只有显示类型转换
//强制类型转换语法: Float()
let aa:Int = 3
let bb:Float = 2.3
var cc = Float(aa)+bb
//6.数组的使用
//swift中的特点:1 存储的所有的数据类型必须是同一类型 2 不必非得是对象类型,基本数据类型也可以存储
//数组的创建方式
var nameArray = ["呵呵","阿斯顿","金坷垃"];//首先推断为数组,数组里面元素的类型为字符串
//这种事直接显示指定数组和其元素类型
var nameArray1:Array<String> = ["小明","老王","星池"];
//创建一个空的数组
var array = Array<String>()//推荐用这种
var array1 = [Int]()//创建一个整型的数组
//访问数组
print("数组第一个元素是\(nameArray[0])")
//添加元素
nameArray.append("金条")
nameArray.insert("小祥", atIndex: 0)
print(nameArray)
//删除
nameArray.removeAtIndex(0)
print(nameArray)
//修改
nameArray[0] = "小翔子"
print(nameArray)
//7.字典
//定义字典
var score:Dictionary<String,Int> = ["小贱":99,"小杰":82,"小随":56]
//定义空的字典
var dic1:Dictionary<String,Int> = [:]
var dic2 = Dictionary<String,Int>()//推荐
//添加键值对
score["小欧"] = 95
//修改某个键值对
score["小贱"] = 59
print(score)
//删除
score.removeValueForKey("小杰")
print(score)
//8.元组
//元组是将任意类型的任意个数的元素组成一个新的数据类型
var status = ("大神32",["18","19","20"],32)
var status1:(className:String,ages:Array,count:Int) = ("大神32",["18","19","20"],32)
//元组数据的访问
//方式1
print(status.0)
//方式2
print(status1.className)
//元组的建议:元组中的元素过多,用标记名称,元组中的元素较少,种类能够分开,直接使用下标
//9.分支语句
//在swift当中,bool类型只有true个false 没有YES和NO
let flag = true
if flag == true{
print("开心")
}else{
print("不开心")
}
//switch
//1.不需要使用break,不会有贯穿现象
let ageOfCat = 10
//switch ageOfCat{
//case 0:
// print("小包")
//case 1:
// print("阿包")
//default:
// print("包包")
//}
//2.支持区间选项
//switch ageOfCat{
//case 0..<10://半闭区间
// print("哈宝")
//case 10...100://闭区间
// print("呢宝")
//default:
// print("腰包")
//}
//3.支持where子句
//switch ageOfCat{
//case var value where ageOfCat < 10 && ageOfCat > 0:
// value++
// print("baobao")
//case var value2 where ageOfCat >= 10 && ageOfCat < 100:
// print("大宝")
//default:
// print("hehe")
//}
//10.循环
//for循环
//for var i = 0; i < 10 ; i++ {
// print("我是第\(i)遍")
//}
let arr = ["🐂","🐴","🐍","🐰","🐲","🐯"]
//遍历数组
for a in arr{
print(a)
}
//遍历字典
let dict = ["❀":18,"西施":16,"杜十娘":21]
for (key,value) in dict{
print("\(key)->\(value)")
}
//while
var number = 5;
while number > 0{
number--
print(number)
}
repeat {
print("dasd")
number--
}while number > -6
//11.函数
//无参无返回值的函数
func function1() ->Void{
print("啦啦啦")
}
//无参有返回值的函数
func function2() ->Int{
return 10
}
//有参无返回值的函数. 参数列表是先写参数名,再写参数类型
func function3(a:Int,b:Double) ->Void{
}
//有参有返回值的函数
func function4(a:Int,b:Double) ->Int{
return a + Int(b)
}
//函数调用的时候需要显示的标明参数名字,但是,一般第一个参数不写,剩下的参数都要标明参数的名字
function4(5, b: 2.0)
//inout参数
//参数默认的是let类型的,但是swift提供了另外一种方式,可以将参数和传入的值进行关联,就是inout
func change(inout value : Int){
value = 10
}
var number1 = 20
change(&number1)
print(number1)
//12枚举
enum Season : Int{
case spring = 10
case summer
case autumn
case winter
}
print(Season.summer.rawValue)
浙公网安备 33010602011771号