swift中常用关键字
  • **用作声明的关键字: **

classdeinitenumextensionfuncimportinitletprotocolstaticstructsubscripttypealiasvar

  • 用作语句的关键字

breakcasecontinuedefaultdoelsefallthroughifinforreturnswitchwherewhile

  • 用作表达和类型的关键字:

asdynamicTypenewissuperselfSelfType__COLUMN____FILE____FUNCTION____LINE__

  • 特定上下文中被保留的关键字:

associativitydidsetgetinfixinoutleftmutatingnonenonmutatingoperatoroverridepostfixprecedenceprefixrightsetunownedunowned(sale)unowned(unsafe)weakwillset


关键字作用 :

class : 用来声明一个类
enum : 用来声明一个枚举
init : 相对于类的释构方法的修饰。
deinit : 相对于类的释构方法的修饰。
对于类的构造和释构在swift 中需要使用关键词来修饰,而很多高级语言并不需要特别的指定,便C++ 只需要类名与构造函数名相同就可以,不需要额外的关键词。
extension : 扩展.类似于OC的categories.
1. Swift 中的可以扩展以下几个:
2. 添加计算型属性和计算静态属性
3. 定义实例方法和类型方法
4. 提供新的构造器
5. 定义下标
6. 定义和使用新的嵌套类型
7. 使一个已有类型符合某个接口
let : 声明一个常量. 类似于const
protocol : 协议.也可以叫接口.这个往往在很多高级语言中不能多重继承的情况下使用协议是一个比较好的多态方式。
static : 声明静态变量或者函数
struct : 声明定义一个结构体
subscript : 下标索引修饰.可以让class、struct、以及enum使用下标访问内部的值
typealias : 为此类型声明一个别名.和 typedef类似.
break : 跳出循环.一般在控制流中使用,比如 for . while switch等语句
case : switch的选择分支.
continue : 跳过本次循环,继续执行后面的循环.
in : 范围或集合操作,多用于遍历.
fallthrough : swift语言特性switch语句的break可以忽略不写,满足条件时直接跳出循环.fallthrough的作用就是执行完当前case,继续执行下面的case.类似于其它语言中省去break里,会继续往后一个case跑,直到碰到break或default才完成的效果.

switch integerToDescribe {
case 1, 3, 5, 7, 11, 13, 17, 19:
description += " a prime number, and also";
fallthrough // 执行到此并不跳出循环,而是继续执行case5
case 5:
description += " an integer" // 执行到这一步,跳出循环
default :
description += " finished"
}

where : 用于条件判断,和数据库查询时的where 'id > 10'这样功能. swift语言的特性.OC中并没有.

let yetAnotherPoint = (1, -1)
switch yetAnotherPoint {
case let (x, y) where x == y:
println("(\\(x), \\(y)) is on the line x == y")
case let (x, y) where x == -y:
println("(\\(x), \\(y)) is on the line x == -y")
case let (x, y):
println("(\\(x), \\(y)) is just some arbitrary point")

当switch的条件满足where 后面的条件时,才执行语句。
is & as : is一般用于对一些变量的类型做判断.类似于OC中的isKindClass. as 与强制转换含义雷同.
is Example:

for view : AnyObject in self.view.subviews
{
if view is UIButton
{
let btn = view as UIButton;
println(btn)
}
}

dynamicType : 获取对象的动态类型,即运行时的实际类型,而非代码指定或编译器看到的类型
__COLUMN__: 列号,
** __FILE__**:路径,
__FUNCTION__: 函数,
__LINE__ : 行号

 
看打印

associativity: 运算符的结合性
inout : inout作为函数声明时,引用传值的关键字。但是在调用的时候引用的是地址,所以在引用的时候要加上 &,例如:

func test(inout a :Int , inout b :Int){  // 函数内相关操作
}
var num1 = 3
var num2 = 10
test(&num1,&num2)

willSet 和 didSet: willSet 和 didSet的作用是对赋值过程前后附加额外的操作
可以看做是捕获状态然后做操作,在将要赋值的时候和已经赋值的时候做相 关操作
mutating : 作用:写在func前面,以便于让func可以修改struct和protocol的extension中的成员的值。 如果func前面不加mutating,struct和protocol的extension中的成员的值便被保护起来,不能修改
class var: 在swift中对于enum和struct来说支持用static关键字来标示静态变量,
但是对于class成员来说,只能以class var的方式返回一个只读值。例如:

struct SomeStructure {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int { // return an Int value here
}
}
enum SomeEnumeration {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
// return an Int value here
}
}
class SomeClass {
class var computedTypeProperty: Int {
}
}

这样其实很好的区分了struct和class的功能,
不像C# 抓来一个随便用,但相对于oc来讲其实是弱化了界限,
如果你想在class中搞一个非只读的静态变量出来,可以和struct进行配合。
convenience : convenience用来进行方便的初始化,就相当于构造函数重载。
对于class来讲,默认或指定的初始化方法作为所谓的Designated初始化。
若重载的初始化需要调用Designated初始化则将它作为convenience初始化,在方法前要加上convenience关键字。

class Figure{
var name:String!
var nikname:String?
init(){
name = "John"
}
convenience init(name:String!,nikname:String!) {
self.init() self.name = name self.nikname = nikname
}
}

precedence : 运算的优先级,越高的话优先进行计算。swift 中乘法和除法的优先级是 150 ,加法和减法的优先级是 140 ,这里我们定义点积的优先级为 160 ,就是说应该早于普通的乘除进行运算。
unowned, unowned(safe), unowned(unsafe):无宿主引用。
infix: 表示要定义的是一个中位操作符,即前后都是输入
defer: 用来包裹一段代码,这个代码块将会在当前作用域结束的时候被调用。这通常被用来对当前的代码进行一些清理工作,比如关闭打开的文件等。
可以在同一个作用域中指定多个 defer
代码块,在当前作用域结束时,它们会以相反的顺序被调用,即先定义的后执行,后定义的先执行。
guard : 当某些条件不满足的情况下,跳出作用域.

func testFunc(input:Int) {
guard input < 10 else {
print("Input must < 10")
return
}
print("Input is \\(input)")}
testFunc(1)
testFunc(11)

与if用法一样,但是作用与if相反.相比if来说,guard有一个好处:如果不使用return,break,continue,throw跳出当前作用域,编译器会报错.所以,对那些对条件要求十分严格的地方,guard是不二之选。guard也可以使用可选绑定(Optional Binding)也就是 guard let 的格式

func testMathFunc(input:Int?){
guard let _ = input else {
print("Input cannot be nil")
return
}
}
testMathFunc(nil)

PS: set、get 、new、self、super、none、if 、for、return文中没提到的就不一一介绍了。没提到的都是最基本的或者我不知道的或者不常用的关键字,后面接触到新的再继续记录.

 

作者:花前月下
链接:https://www.jianshu.com/p/1ae8c364954a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

swift学习笔记 - swift中常用关键字的更多相关文章

  1. 设计模式学习笔记——java中常用的设计模式

    单例设计模式(Singleton Pattern) 观察者模式(Observer Pattern) 工厂模式(Factory Pattern) 策略模式(Strategy Pattern) 适配器模式 ...

  2. Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案

    在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案: 问题的发现过程 UIViewController ...

  3. java学习笔记-继承中super关键字

    背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...

  4. Swift学习笔记 - Swift属性只读

    在OC中我们经常用到只读属性,用readonly修饰一下就行了,但在Swift中已经不是这样修饰的了,下面记录一下Swift中只读属性的使用 在OC中的只读: //只读属性 @property(rea ...

  5. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  6. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  7. docker学习笔记二:常用命令

    docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...

  8. amazeui学习笔记--css(常用组件16)--文章页Article

    amazeui学习笔记--css(常用组件16)--文章页Article 一.总结 1.基本使用:文章内容页的排版样式,包括标题.文章元信息.分隔线等样式. .am-article 文章内容容器 .a ...

  9. amazeui学习笔记--css(常用组件10)--导航条Topbar

    amazeui学习笔记--css(常用组件10)--导航条Topbar 一.总结 1. 导航条:就是页面最顶端的导航条:在容器上添加 .am-topbar class,然后按照示例组织所需内容.< ...

随机推荐

  1. js 手机号码简单正则校验

    现在手机号码的号段有如下几种,包括17年新发出的三个(166,199,198)号段. 在一些项目注册登录或者其他中,涉及到手机号进行一个简单的有效验证,在前端先进行一个简单的检验: 判断字符串是否符合 ...

  2. 数据库SQL语句错误

      Caused by: android.database.sqlite.SQLiteException: near "where": syntax error(Sqlite co ...

  3. IntelliJ Idea下Go项目开启Debug调试

    1.新建Go项目,创建入口go文件(Test1.go),随便写点啥,比如: package main import "fmt" func main(){ fmt.Println(& ...

  4. [转] hadoop MapReduce实例解析-非常不错,讲解清晰

    来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...

  5. Job for mysqld.service failed because the control process exited with error code

    启动MySQL时抛出: Job for mysqld.service failed because the control process exited with error code. See &q ...

  6. SQL日期数据格式的处理

    sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...

  7. Lapack下载安装

    安装 1.下载压缩文件 wget http://www.netlib.org/lapack/lapack-3.8.0.tar.gz 2.解压缩 tar -zxvf lapack-3.8.0.tar.g ...

  8. IT同行请教我如何培养读书习惯,结果就是“读了1本书,并写下'读《成交》有感'一文”

    前段时间,我把CSDN博客的签名加上了"读过100+本经典书籍". 一个经常关注我CSDN博客的老乡,问我是如何做到的. 该老乡,准确来说是前辈,该前辈买了很多技术读物却没有耐心读 ...

  9. SQLSERVER-存储过程知识点

    原文链接:http://www.qeefee.com/article/000566 存储过程是一组预编译的SQL语句,它可以包含数据操纵语句.变量.逻辑控制语句等. 存储过程允许带参数: 输入参数:可 ...

  10. iOS UI01_UIView

    // //  AppDelegate.m //  UI01_UIView // //  Created by dllo on 15/7/29. //  Copyright (c) 2015年 zhoz ...