美文网首页
->Swift简论

->Swift简论

作者: 鱼的记忆ling | 来源:发表于2016-02-29 23:11 被阅读14次

多掌握一门外语是很重要的,近日新学习了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入门文章,有不足之处,还请多多指教

相关文章

网友评论

      本文标题: ->Swift简论

      本文链接:https://www.haomeiwen.com/subject/kiezhttx.html