多掌握一门外语是很重要的,近日新学习了Swift语言,特地记录下来, Swift与OC是有很大的不同的,在此就简单介绍一下Swift的基本语法
Swift 支持隐式类型推断,可以根据初值,自动的判断Swift的数据类型
定义一个变量 ,使用let定义的一个常量,不能重新赋值
let a = 10
let c = 2.1
Swift 不支持隐式类型转换,不能让两个不一样的数据类型做四则运算
let d = a + c
这里写法是不正确的
let d = Double(a) + c
正确的写法
Swift支持运算符的重载,会根据语境自动判断运算符的含义
let str3 = str + str2
Swift里面使用 var定义一个变量
如果需要定义一个初值为nil的变量的话,格式: var + 变量名 + ":" + 变量类型? = nil
var b :String? = nil
数组
//Swift数组里面的数据类型必须是一样的
//AnyObject Swift 1.0 版本 NSObject Swift2.0版本
let array = [1, 2, 3, "a"] //数组初始化的第一种方式 代表NSObject类型
let arryy1 : [Int] = [1, 2, 2,] //数组初始化的第二种方式,先指定数据类型
let array2 : [Int] = [] //空数组 没有意义
//int类型的变量数组
var array = [1, 2, 3, 4, 5]
数组的增, 删, 改, 查
//查
print(array[1])
//增
//在一个数组里,插入一条数据
array.insert(10, atIndex: 2)
print(array)
//在数组的某个位置插入一个数组
array.insertContentsOf(array1, at: 2)
print(array)
//删
//删除数据的同时,保存内存空间
//Swift里面的bool是一个枚举,只有true和false 两种参数
array.removeAll(keepCapacity: true)
//删除集合
let range : Range = Range(start: 2, end: 3)
array.removeRange(range)
//改
array[1] = 30
print(array)
//数组的拼接 (运算符重载)
var array2 = [6, 7, 7, 8, 9]
var array3 = array + array2
print(array3)
字典
Swift的字典里面 所有的Key, 所有的Value都必须是同一类型的
let dic1 : [ Int : String] = [1 : "a", 2 : "b"]
字典的增,删,改,查
var dic = [1 : 2, 3 : 4]
print(dic)
//字典的增加 ,对不存在的key赋值
dic[5] = 8
print(dic)
//改
/对存在的key 赋值
dic[1] = 100
print(dic)
//删
dic.removeValueForKey(1)
//删除
dic[5] = nil
print(dic)
//查
print(dic[3]) //需要拆包?
元组
使用() 表示定义一个元组,元组里面没有数据类型的概念
let type = ("Swift","what")
//访问元组的第一个方法
print(type.0)
//第二种的访问方式
let type2 : (name : String , nickName : String) = type
print(type2.name)
Swift的基本数据结构
循环结构
let array = [1, 2, 3, 4, 5]
//for循环
for var i = 0; i<array.count; i++ {
print("i = \(i)")
}
//While循环
var i = 0
while i < 10 {
i++
print(i)
}
//repaet while 和 do while 一样
//Swift 1.0版本的时候叫做do while Swift2.0 版本的时候叫做repeat while
repeat{
i++
print(i)
}while i < 10
//forin 循环
let array = [1, 2, 3, 4, 5]
for var a in array{
print(a)
}
分支结构
var timer : String? = nil
if timer != nil {
print("timer 存在")
}else{
print("timer 不存在")
}
let value = 0
switch value {
case 0:
print(value)
case 1:
print(value)
default:
print("超了")
}
// 0...10 表示 从 0 开始 到 10结束 包含10
//0..<10表示的是 从 0 开始 到10结束 但是不包括10
switch value {
case 0...10:
print(value)
case 11...20:
print(value)
default:
print("又吵了")
}
let point = (10, 10)
switch point {
case (10,10):
print(point)
case (_, 10):
print(point.0)
case (10, _):
print(point.1)
case (_, _):
print(point)
}
let value = 0
let value1 = 100
switch value{
case 0 where value1 < 10:
print(value)
case 0 where value1 > 10:
print("正确")
default:
print("错误")
}
函数
//无参无返回值函数
//func (关键字) test (函数名) "()"(参数列表) -> Void (返回值类型)
func test () ->Void {
print("我是第一个函数")
}
test()
//无参有返回值
func test1() ->String{
return "第二个函数 无参有返回值"
}
//接收函数的返回值
let str = test1()
print(str )
//有参无返回值的函数
//参数格式参数名 + ":" + 参数类型
//->Void 可省略
func test5( name: String ,gender :String) ->Void{
print("我叫\(name),我的性别是\(gender)")
}
test5("Swift",gender :"未知")
////有参有返回值
func test7 (name:Array<Int>)->NSArray{
return[ "luo"]
}
//无参有多个返回值
func test8()->(String ,String){
return ("Swift","19")
}
let type = test8()
print(type)
print(type.1)
Inout函数
//Inout函数
//Swift函数里面的参数.默认是使用Let修饰的,是不可以更改的
func test10 (inout numebr : Int){
numebr = 100
}
var a = 5
test10(&a)
print(a)
函数嵌套
//第一层
func test11(){
//第二层
func test12(){
//第三层
func test13(){
//第四层
func test14(){
//第五层
func test15(){
//可以无限定义下去
}
}
}
}
}
此篇是我学习Swift入门文章,有不足之处,还请多多指教