Swift 进阶【三】可选值
Swift 中可选值的定义如下
1  | enum Optional<Wrapped> {  | 
因为 Optional 是枚举类型,所以有的时候可以用模式匹配来进行一些巧妙的操作:
- 使用 if case 来进行模式匹配,对非 nil 的值做 for 循环
 
1  | let ary = [1, 2, nil, 4, nil, 44]  | 
Swift 中可选值的定义如下
1  | enum Optional<Wrapped> {  | 
因为 Optional 是枚举类型,所以有的时候可以用模式匹配来进行一些巧妙的操作:
1  | let ary = [1, 2, nil, 4, nil, 44]  | 
Sequence定义:
1  | protocol Sequence {  | 
要实现一个Sequence,首先需要提供一个返回**迭代器(iterator)**的makeIterator() 方法。
对于迭代器,它是一个满足 IteratorProtocol 协议的类型。
IteratorProtocol协议的定义:
1  | protocol IteratorProtocol {  | 
在Swift中,数组是值类型。并且Swift中,Swift标准库中的所有集合类型都使用了“写时复制”这一技术,避免了大量副本导致性能下降。值类型的好处,不仅是性能有提高,其次就是能保证数组的不可变。
在Objective-C中,声明一个不可变的数组 NSArray 并不能保证数组的不可变。例如:
1  | let mutableAry = NSMutableArray(array: [1, 2, 3])  | 
正确的做法是,在赋值的时候,先进行拷贝:
1  | let nsAry = mutableAry.copy() as! NSArray  | 
之前我一直以为,Swift是一门弱类型的语言。
判断依据:
Swift 变量不强制的指定类型,而是用
var和let表示可变与不可变。所以,Swift是一门弱类型的语言。
但是,看了一下强弱类型的时候,才恍然大悟。其实 var 和 let 的特性,只是说明Swift是一门动态类型的语言。并不能指出是否是强或弱类型。
一些定义:
打开浏览器,输入 http://192.168.1.1 ,进入光猫管理页面,用 useradmin 账户登陆。将地址栏中的连接 http://192.168.1.1/cgi-bin/content.asp  改为 http://192.168.1.1/cgi-bin/telnet.asp 。出来如下的界面:

启用 Telnet ,点击确定。
打开 Mac 终端,输入命令
1  | telnet 192.168.1.1  | 
按住 control + s 键,保存终端内容到文件。
文件中搜索 telecomadmin ,就能看到超级密码了。
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
1  | 
  | 
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__int__.py 用于标识当前文件夹是一个包。
考虑一个在 package_runoob 目录下的 runoob1.py、runoob2.py、__init__.py 文件,test.py 为测试调用包的代码,目录结构如下:
1  | test.py  | 
package_runoob/runoob1.py
1  | #!/usr/bin/python  | 
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
模块的引入
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
1  | import module1[, module2[,... moduleN]  | 
比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:
1  | 模块名.函数名  | 
我们在进行 SSH 登陆的时候,每次都需要输入密码,就感到十分的不方便,这里可以利用 SSH Key(ssh公钥) 来验证登录,从而实现免密登陆。
生成 SSH Key 我们需要 ssh-keygen 命令
1  | ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  | 
查看生成的 SSH Key
1  | cat ~/.ssh/id_rsa.pub  |