一、变量定义

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. css盒模型:BFC、IFC边距重叠解决方案

    BFC:块级格式化上下文 IFC:行内格式化上下文 实例如下: <div class="out" style="background: red;"> ...

  2. java实现简单回文算法

    算法要求 编写一个程序,判断一个字符串是否为"回文".回文串:字符串字符从前往后与从后往前一致(中心对称). 算法思路 首先将字符串等分左右两块,然后依次对称比较每一对字符是否相同 ...

  3. SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能

      前言 前面几节都是讲的基础内容,本节我们讲讲索引性能优化,当对大数据进行处理时首先想到的就是索引,一旦遇到这样的问题则手忙脚乱,各种查资料,为何平常不扎实基本功呢,我们由浅入深,简短的内容,深入的 ...

  4. 搭建svn服务器(ubuntu)

    ubuntu搭建svn服务器 环境:ubuntu 12.04.5 apt-get install subversion 找个目录作为svn的仓库 mkdir svn svnadmin create s ...

  5. Side effect (computer science)

    In computer science, a function or expression is said to have a side effect if it modifies some stat ...

  6. LeetCode Golang 8. 字符串转换整数 (atoi)

    8. 字符串转换整数 (atoi) 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组 ...

  7. node工具是是什么东西

    Node到底是个啥? Node是一个服务器端JavaScript解释器,可是真的以为JavaScript不错的同学学习Node就能轻松拿下,那么你就错了,总结:水深不深我还不知道,不过确实不浅 最近写 ...

  8. 简单实现双向数据绑定mvvm。

  9. ubuntu设置PATH

    试了好多遍,多无效.. 最后在/etc/enviroment下设置才有效. 不过让有一些未解问题 我使用sudo su 进入到root用户权限,设置完成的. 重新使用sudo -s进入root用户权限 ...

  10. angular-Then的用法

    then怎么使用(主要是如何从中提取出我们需要的后台返回的数据):then(fn) 方法中带一个参数,这个参数就是要被执行的函数,并且,这个作为参数的函数本身有一个参数,这个参数就是我们需要的数据,这 ...