swift语言点评一
一、变量定义
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.
let appleSummary = "I have \(apples) apples."
4、集合类型:
let emptyArray = [String]()
let emptyDictionary = [String: Float]()
总结:(1)类型写在变量后,(2)类型可推断,(3)便捷的字符串化操作。
二、控制流
1、控制流综述
Use if
and switch
to make conditionals, and use for
-in
, while
, 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、类的初始化函数化
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、枚举值的直接引用
let hearts = Suit.hearts
4、结构型枚举
enum ServerResponse {
case result(String, String)
case failure(String)
}
let success = ServerResponse.result("6:00 am", "8:09 pm")
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.
let printerSuccess = try? send(job: 1884, toPrinter: "Mergenthaler")
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语言点评一的更多相关文章
- swift语言点评四-Closure
总结:整个Closure的作用在于简化语言表述形式. 一.闭包的简化 Closure expression syntax has the following general form: { () -& ...
- swift语言点评二
一.数据类型 1.基础类型的封装 Swift provides its own versions of all fundamental C and Objective-C types, includi ...
- swift语言点评十九-类型转化与检查
1.oc比较: -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) isMemberOfClass: classObj 判断是否是这个 ...
- swift语言点评十八-异常与错误
1.错误类型与枚举的结合 enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNee ...
- swift语言点评十七-Designated Initializers and Convenience Initializers
Swift defines two kinds of initializers for class types to help ensure all stored properties receive ...
- swift语言点评十四-继承
Overriding A subclass can provide its own custom implementation of an instance method, type method, ...
- swift语言点评十-Value and Reference Types
结论:value是拷贝,Reference是引用 Value and Reference Types Types in Swift fall into one of two categories: f ...
- swift语言点评八-枚举
总结:swift中的枚举可以看作变量可以作为case匹配参数的类 Enumerations 枚举的作用:状态列举与匹配 枚举值与类型 If a value (known as a “raw” valu ...
- swift语言点评五-Function
一.函数类型 Every function in Swift has a type, consisting of the function’s parameter types and return t ...
随机推荐
- DirectUI界面编程(六)实现右键弹出菜单
本节向大家介绍一下右键弹出菜单是如何实现的.效果如下,在窗口中点击鼠标右键弹出菜单,点击菜单项能够响应菜单点击事件. 使用Duilib库实现的弹出菜单,实际上也是一个Windows窗口,因此我们需要创 ...
- 有关DevExpress 安装后vs工具箱不显示图标的错误
在https://www.devexpress.com/Support/Center/Question/Details/T214296/missing-icons-from-toolbox找到解决方法 ...
- 结构化编程-Structured programming
结构话编程强调的是对流程的控制: 它为面向过程编程提供天然的支持. Structured programming is a programming paradigm aimed at improvin ...
- spring mvc 下载的时候中文文件名不显示
Headers.add("Content-Disposition", "attachment;filename=" + new String(file.getB ...
- 通过rpm安装jdk
通过rpm安装,安装在/usr/local 1 .编辑系统环境变量 vi /etc/profile 输入i 加入内容如下: export JAVA_HOME=/usr/local/jdk1.7.0_7 ...
- 洛谷P1138 第k小整数
我偏不用sort Treap好题啊 看到只有一个人写Treap,而且写的不清楚,那我就来详细地写一下,方便新人学习 第(-1)部分:前置知识 二叉查找树:满足左子树的数据都比根节点小,右子树的数据都比 ...
- 【hdu 6321】Dynamic Graph Matching
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] DP 设f[i][j]表示前i个操作,已经匹配了的点的状态集合为j的方案数 对于+操作 有两种情况. 1.这条边作为匹配的边 2.这 ...
- 【codeforces 505D】Mr. Kitayuta's Technology
[题目链接]:http://codeforces.com/problemset/problem/505/D [题意] 让你构造一张有向图; n个点; 以及所要求的m对联通关系(xi,yi) 即要求这张 ...
- UVA 11478 Halum
Halum Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 114 ...
- 工具-WIN7-内存占用过高解决办法
我的WIN7内存竟然吃到了7.6G,太不可思意了 第一步 看看网上的解决办法 http://jingyan.baidu.com/article/870c6fc31060eab03fe4beee.htm ...