swift学习笔记 - swift中常用关键字

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文中没提到的就不一一介绍了。没提到的都是最基本的或者我不知道的或者不常用的关键字,后面接触到新的再继续记录.

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

推荐阅读更多精彩内容

  • 关键字作用: Public:被Public修饰的可以在其他作用域被访问,可以在其他作用域被继承或者override...
    顺手给我new一个对象阅读 1,202评论 0 2
  • Swift2.0 1.defer译为延缓、推迟之意类似栈 注意作用域,其次是调用顺序——即一个作用域结束(注意),...
    zeqinjie阅读 3,367评论 0 50
  • 基础部分(The Basics) 当推断浮点数的类型时,Swift 总是会选择Double而不是Float。 结合...
    gamper阅读 1,261评论 0 7
  • 晚风习习,现在阳台上享受着这入夜的清凉。夜并不黑暗,远远近近的灯光,点缀着夜的色彩。听着孩子们的语音,心底柔软处轻...
    向行阅读 355评论 0 3
  • 爱是什么 记得星爷说过一句话:曾经有一段爱情摆在我得面前,我…… 相信有好多人都听话,看过,可谁又明白爱到底是...
    默也阅读 220评论 0 1