一、变量定义

1、常量与变量

Use let to make a constant and var to make a variable.

2、类型与推测

However, you don’t always have to write the type explicitly. Providing a value when you create a constant or variable lets the compiler infer its type.

3、类型转换与字符串

Write the value in parentheses, and write a backslash (\) before the parentheses.

  1. let appleSummary = "I have \(apples) apples."

4、集合类型:

  1. let emptyArray = [String]()
  2. let emptyDictionary = [String: Float]()

总结:(1)类型写在变量后,(2)类型可推断,(3)便捷的字符串化操作。

二、控制流

1、控制流综述

Use if and switch to make conditionals, and use for-inwhile, and repeat-while to make loops.

2、optional value ?

An optional value either contains a value or contains nil to indicate that a value is missing.

3、default value ??

4、if let 判断是否为非空

You can use if and let together to work with values that might be missing.

5、if 后只能跟bool

6、swich 可以使用任意值

7、

let x where x.hasSuffix("pepper")

将switch值赋给x,如果复合范式,最终会赋给x

where vegetable.hasSuffix可以用本体;

8、for-in 使用了类型推断技术

for (kind, numbers) in interestingNumbers 可以用于字典;

总结:

if的特别性、?、??、switch支持任意类型。

三、函数与闭包

1、函数形式

func greet(person: String, day: String) -> String{}

简化表示:()->(){}

2、no argument label

参量无名调用;向c++靠近;

3、多输出函数

func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int)

4、高阶函数

5、闭包及其简化。

总结:

Functions are a first-class type

三、类

1、类的初始化函数化

  1. var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")

2、 属性:willSet and didSet getter and a setter

3、 If the value before the ? is nil, everything after the ? is ignored and the value of the whole expression is nil.

总结:类的使用函数化,属性的访问控制便捷化。

四、枚举与结构

1、类与结构的区别

One of the most important differences between structures and classes is that structures are always copied when they are passed around in your code, but classes are passed by reference.

2、枚举Use the init?(rawValue:) initializer

Use the init?(rawValue:) initializer to make an instance of an enumeration from a raw value. It returns either the enumeration case matching the raw value or nil if there is no matching Rank

if let convertedRank = Rank(rawValue: 3)

3、枚举值的直接引用

  1. let hearts = Suit.hearts

4、结构型枚举

  1. enum ServerResponse {
  2. case result(String, String)
  3. case failure(String)
  4. }
  5. let success = ServerResponse.result("6:00 am", "8:09 pm")
  6. let failure = ServerResponse.failure("Out of cheese.")

五、协议与扩展

与oc语言无区别;

扩展可以针对任何类型。

六、异常捕获

Another way to handle errors is to use try? to convert the result to an optional. If the function throws an error, the specific error is discarded and the result is nil. Otherwise, the result is an optional containing the value that the function returned.

  1. let printerSuccess = try? send(job: 1884, toPrinter: "Mergenthaler")
  2. let printerFailure = try? send(job: 1885, toPrinter: "Never Has Toner")

七、defer

Use defer to write a block of code that is executed after all other code in the function, just before the function returns.

八、范型

<>

swift语言点评一的更多相关文章

  1. swift语言点评四-Closure

    总结:整个Closure的作用在于简化语言表述形式. 一.闭包的简化 Closure expression syntax has the following general form: { () -& ...

  2. swift语言点评二

    一.数据类型 1.基础类型的封装 Swift provides its own versions of all fundamental C and Objective-C types, includi ...

  3. swift语言点评十九-类型转化与检查

    1.oc比较: -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) isMemberOfClass: classObj 判断是否是这个 ...

  4. swift语言点评十八-异常与错误

    1.错误类型与枚举的结合 enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNee ...

  5. swift语言点评十七-Designated Initializers and Convenience Initializers

    Swift defines two kinds of initializers for class types to help ensure all stored properties receive ...

  6. swift语言点评十四-继承

    Overriding A subclass can provide its own custom implementation of an instance method, type method, ...

  7. swift语言点评十-Value and Reference Types

    结论:value是拷贝,Reference是引用 Value and Reference Types Types in Swift fall into one of two categories: f ...

  8. swift语言点评八-枚举

    总结:swift中的枚举可以看作变量可以作为case匹配参数的类 Enumerations 枚举的作用:状态列举与匹配 枚举值与类型 If a value (known as a “raw” valu ...

  9. swift语言点评五-Function

    一.函数类型 Every function in Swift has a type, consisting of the function’s parameter types and return t ...

随机推荐

  1. Creative Cloud 无法连接问题

    防火墙允许 PDApp.exe Windows:Program Files\Common Files\Adobe\OOBE\PDApp\core Mac OS:应用程序 > 实用工具 > ...

  2. usaco No Change, 2013 Nov 不找零(二分查找+状压dp)

    Description 约翰带着 N 头奶牛在超市买东西,现在他们正在排队付钱,排在第 i 个位置的奶牛需要支付 Ci 元.今天说好所有东西都是约翰请客的,但直到付账的时候,约翰才意识到自己没带钱,身 ...

  3. 高德SDK获取到的坐标转换为GPS真实坐标方法,Java版

    发现高德SDK不提供高德的坐标转GPS坐标(GCJ_02转WGS_84),下面是一份Java版的 /**************************** 文件名:GCJ2WGS.java 创建时间 ...

  4. Ubuntu包管理工具整理

    概述 常用的包管理包含三类工具:dpkg.apt和aptitude.1 dpkg 主要是对本地的软件包进行管理,本地软件包包括已经在本地安装的软件包和已经下载但还没有安装的 deb 文件,不解决依赖关 ...

  5. Custom Hosting in IIS/WAS

    常常需要与宿主实例进行交互.这对于使用自托管的方式是不可或缺的.当使用IIS或WAS时,不能直接访问宿主.为了克服这个障碍,WCF提供了一个宿主工厂.在.svc文件中使用Factory标签,使用此工厂 ...

  6. PhotoZoom安装之后没有快捷方式怎么解决?

    相信初次安装PhotoZoomPro的小伙伴都有这样的经历,就是软件安装完成之后桌面上并没有生成快捷方式,而且在所有程序里也找不到这个软件.这样的话,对于下次启动软件就相当困难了,甚至有些朋友为此又重 ...

  7. Java用freemarker导出Word 文档

    1.用Microsoft Office Word打开word原件: 2.把需要动态修改的内容替换成***,如果有图片,尽量选择较小的图片几十K左右,并调整好位置: 3.另存为,选择保存类型Word 2 ...

  8. 服务器搭建域控与SQL Server的AlwaysOn环境过程(五)配置异地机房节点

    0 引言 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示WSFC集群有脱机危险 在异地节点只有一个的情况下,虽然Windows2012R2有动态 ...

  9. python 用法测试

    Python 3.5.6 1.js风格的回调测试 def b(): ') def a(fn): if callable(fn): fn() a(b) class Sample: def q(self) ...

  10. df与du查看磁盘空间使用不一致的解决方法

    近一段时间,某台服务器的磁盘空间使用不太正常,与其他的服务器相比,严重超出磁盘空间使用 使用df与du相关命令查看,具体结果如下: du -hFilesystem       Size  Used A ...