->Swift简论

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容