REPL (Read-Eval-Print Loop “读取-求值-输出”循环,简称REPL)
设置环境:
打开终端 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
运行 xcrun swift
覆盖父类中的方法,需要使用 override 关键字
@objc用来表示协议是可选的
? 表示改类型是可选的! 表示强制解析
_ 表示通配符,代表任何值
"~="表示操作符在一定范围内匹配
is关键字 进行父类与子类之间的匹配和判断
as关键字 检查对象类型是不是某个类的子类,并且想使用父类的属性或方法时,使用as关键字将判断的对象类型转换为父类型
通过“&”字符进行错误保护:运算符前添加“&”符号可以避免出错。例如,使用“&/”运算符代替“/”避免除以0的错误。
-Overflow/ underflow检测:检测你的运算符是否会溢出或者下溢,可以利用“&”运算符处理
func hello(fromName name: String) {
println(
"\(name) says hello to you!"
)
}
fromName 为外部参数,如果要使外部参数和内部参数名称一样,只需要在name前面加 #
出于一些原因希望在函数中跳过外部参数名 ,为外部函数添加
_
来解决
输入输出参数 inout,
操纵外部变量
var
name1 =
"Mr. Potato"
var
name2 =
"Mr. Roboto"
func nameSwap(inout name1: String, inout name2: String) {
let oldName1 = name1
name1 = name2
name2 = oldName1
}
nameSwap(&name1, &name2)
如果想要有一个具有可选方法的协议,必须给协议加上一个@objc标签作为前缀(即使类不能兼容objective-C)。然后,给所有可选方法加上@optional标签作为前缀。
- @objc protocol Speaker {
- func Speak()
- @optional func TellJoke()
- }
柯里化函数
柯里化(Currying),又称部分求值(Partial Evaluation),是一种函数式编程思想,就是把接受多个参数的函数转换成接收一个单一参数(最初函数的第一个参数)的函数,并且返回一个接受余下参数的新函数技术。