注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Swift编程之二基础之一基本技术说明  

2016-03-14 21:51:01|  分类: IOS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Swift编程之二基础之一基本技术说明

Swift中,其常用的技术和一般的编程语言没有什么本质的区别,主要包含有:

简单值,控制流,函数和闭包,对象和类,枚举和结构体,协议和扩展,另外还有不可或缺的泛型。

在苹果的开发中,使用let来声明常量,使用var来声明变量。至于常量和变量怎么使用,这里就不细讲了。

let data = 7;   var temp = 10;

如果不能直接让编译器来确定数据类型就得这么着:

let data:Double = 70;

控制流说得比较文诌诌的,其实是条件语句,比如大家常见的if elseswitch case语句。

这个也没什么多讲的,只是注意两个符号,一个是?号,一个是两个??号。

一个问号表示:

Int? 等价于 Optional<Int>,是一种语法糖;

上述 Int? 类型的变量 oVar 表示 oVar 要嘛包含Int类型的数据,要嘛为nil —— Optional Type的变量不能赋值为nil;也就是说,Optional类型允许变量没有值,其它类型如果没有初始化值在使用时会报错 —— 比如通过下标访问数组元素时返回Optional类型,越界时可以返回nil

在声明一个Optional类型变量时如果没有赋初始值,那么默认为nil

Optional类型变量的真实值是被封装起来的,包装在其枚举值Some中,如上{Some 123}

使用问号?表示封装(可能有值可能没有),使用感叹号!表示拆封取值(强制认为有值,如果没有则会触发运行时错误),有点类似“Has a value? —— "I assure it has!"

由于Optional枚举类型遵循LogicValue协议,所以可以作为逻辑判断条件,当有值时为true,不包含值时为false

两个问号表示是默认值:

let nickName: String? = nil

let fullName: String = "John Appleseed"

let informalGreeting = "Hi \(nickName ?? fullName)"

函数和闭包,真心的没啥可讲的,特别是闭包,无论是在C#C++11还是在Java还是其它的脚本语言中,都讲了一次又一次。等下面分别讲时如果有什么特别的,再细讲。函数其实就是普通函数加上Lambada表达式的你就明白了。

对象和类,这个也和其它语言差不多,比较特别是声明一个对象实例时,要加上小括号,在C++中可是不用的。

var shape = Shape();

记得当初面试别人还问过,为什么C++类中声明一个对象不用加小括号(没有参数的构造函数)。说是像是一个函数的调用。

其它的只不过是换一个形式,其实实质还是一样的,比如析构函数用:

deinit {

// 执行析构过程

}

类和结构体直接掠过。

协议和扩展,这个可能别的语言少见。

协议 定义了一个蓝图,规定了用来实现某一特定工作或者功能所必需的方法和属性。类,结构体或枚举类型都可

以遵循协议,并提供具体实现来完成协议定义的方法和功能。任意能够满足协议要求的类型被称为 遵循(confor

m) 这个协议。

除了遵循协议的类型必须实现那些指定的规定以外,还可以对协议进行扩展,实现一些特殊的规定或者一些附加

的功能,使得遵循的类型能够收益。

扩展就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能(functionality)。这包括在没有权限获

取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类

似。(不过与 Objective-C 不同的是,Swift 的扩展没有名字。)

泛型这个和其它的语言高度类似,不再这里赘述,下面如有不同,谈到时再一一细讲。

从宏观上把握一下Swift语言,有助于提纲挈领的掌握知识,能更系统更准确的把握技术的脉搏。

  评论这张
 
阅读(179)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017