重拾Swift第一天 基础语法

呃,为什么说是重拾呢,其实很早之前就接触过Swift,但是那时候还是1.x的版本,就记得!和?满天飞,看了下语法写了小项目,结果头昏脑涨,又转回OC了。

前几天忽然看到google考虑把Swift应用于开发安卓,不管是不是谣言吧,起码Swift发展速度相当之快,于是决定把Swift重新捡起来。

今天看了看基础语法,和记忆中差别还是挺大的。顺手写了个小项目,功能很简单,输入数字排序,可以快速排序也可以冒泡排序,一边结合项目一边熟悉语法吧。
编写时很多还是OC的思维,慢慢转变吧。
首先看下基本结构


首页是个UITableViewController,两个cell,快速排序和冒泡排序,点击cell进入DetailController,输入数字按排序按钮进行排序。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier)
    if cell == nil
    {
        cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: reuseIdentifier)
    }
    let str=dataArray[indexPath.row]
    cell?.textLabel?.text=str
    return cell!
}

首先我们看这一段代码,基本都能看出来就是创建cell的方法
在Swift中,常量用let,变量用var
cell最后为什么有个号呢,这涉及到Swift中可选类型的概念。
使用可选类型(optionals)来处理值可能缺失的情况。可选类型表示:

  • 有值,等于 x
    或者
  • 没有值

其实很容易理解,一个对象可能因为种种原因没有创建成功或者没值,就是nil,OC中向nil发送消息不会报错,但这也不是我们希望看到的。Swift中的可选表示它可能有值也可能没值,我们既然都要return一个cell显示出来,那么cell应该有值,所以我们用!告诉编译器这个cell一定有值,称之为强制解析

  lazy var dataArray:[String]={
    return ["快速排序","冒泡排序"]
  }()

OC里有懒加载的概念,Swift中也有。
Swift中懒加载的关键字是lazy,非常直观好记,但这里有个注意点,你必须使用var关键字来定义延迟加载的属性,不能使用let关键字,因为常量必须在实例构建时赋值。
后面则是一个闭包,相当于block。闭包比较复杂,可以学习一下
闭包
反正这里的意思就是返回一个数组。

 /**
 选择排序要使用的方法
 
 - parameter title: 控制器标题
 */
func chooseSortFunction(title:String){
    switch title{
    case "快速排序":
        sortManager.quickSort(&numbers, left: 0, right: numbers.count-1)
    case "冒泡排序":
        sortManager.bubbleSort(&numbers)
    default:
        print("other")
    }
}

这里注意一点,当匹配的 case 分支中的代码执行完毕后,程序会终止switch语句,而不会继续执行下一个 case 分支。

/**
 快速排序算法
 
 - parameter numbers: 数组
 - parameter left:    左标
 - parameter right:   右标
 */
func quickSort(inout numbers:[Int],left:Int,right:Int)
{

如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数
定义一个输入输出参数时,在参数定义前加 inout
关键字。
大概注意点就是那么多了
代码参见这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,806评论 4 61
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 8,606评论 3 25
  • 回家看到了两个妹妹给爸妈买的按摩椅和足疗机。妈妈让我赶紧体验一下足疗,十五分钟。又让我去按摩两个回合...
    心有佳期阅读 2,338评论 0 0
  • 《稀缺》[美]塞德希尔·穆来纳森 埃尔德·沙菲尔 是不是感觉自己每天忙得要死依旧很穷哪?自己是否...
    橙宇晴阅读 1,310评论 0 0
  • 每个人身边儿都会有喜欢抱怨的人,我身边儿有,不多却出奇的矫情,我称其为伪‘圣人’,在他们眼中除了自己近乎完美之外,...
    940d5c7f45f7阅读 4,617评论 0 2

友情链接更多精彩内容