时间:2014-06-03 20:28:33 作者:啤酒 阅读:16777215
func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
increment(7)
一个函数可以接受其他函数作为参数。
func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)
函数实际是闭包的特殊情况。你可以写一个闭包而无需名字,只需要放在大括号中即可。使用 in 到特定参数和主体的返回值。
numbers.map({
(number: Int) -> Int in
let result = 3 * number
return result
})
Note
练习
重写一个闭包来对所有奇数返回0。
编写闭包时有多种选项。当一个闭包的类型是已知时,例如代表回调,你可以忽略其参数和返回值,或两者。单一语句的闭包可以直接返回值。
numbers.map({number in 3 * number})
你可以通过数字而不是名字来引用一个参数,这对于很短的闭包很有用。一个闭包传递其最后一个参数到函数作为返回值。
sort([1, 5, 3, 12, 2]) { $0 > $1 }
6 对象与类
使用 class 可以创建一个类。一个属性的声明则是在类里作为常量或变量声明的,除了是在类的上下文中。方法和函数也是这么写的。
class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } }
Note
练习
通过 "let" 添加一个常量属性,以及添加另一个方法能接受参数。
通过在类名后加小括号来创建类的实例。使用点语法来访问实例的属性和方法。
var shape = Shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription()
这个版本的 Shape 类有些重要的东西不在:一个构造器来在创建实例时设置类。使用 init 来创建一个。
class NamedShape {
var numberOfSides: Int = 0
var name: String init(name: String) {
self.name = name
} //by gashero
func simpleDescription() -> String {
return "A Shape with \(numberOfSides) sides."
}
}
注意 self 用来区分 name 属性和 name 参数。构造器的生命跟函数一样,除了会创建类的实例。每个属性都需要赋值,无论在声明里还是在构造器里。
使用 deinit 来创建一个析构器,来执行对象销毁时的清理工作。
子类包括其超类的名字,以冒号分隔。在继承标准根类时无需声明,所以你可以忽略超类。
子类的方法可以通过标记 override 重载超类中的实现,而没有 override 的会被编译器看作是错误。编译器也会检查那些没有被重载的方法。
class Square: NamedShape {var sideLength: Double init(sideLength: Double, name: String) { self.sideLength = sideLength super.init(name: name) numberOfSides = 4 } func area() -> Double { return sideLength * sideLength } override func simpleDescription() -> String { return "A square with sides of length \(sideLength)." } } let test = Square(sideLength: 5.2, name: "my test square") test.area() test.simpleDescription()
Note
练习
编写另一个 NamedShape 的子类叫做 Circle ,接受半径和名字到其构造器。实现 area 和 describe 方法。
属性可以有 getter 和 setter 。
class EquilateralTriangle: NamedShape
{
var sideLength: Double = 0.0
init(sideLength: Double, name: String){
self.sideLength = sideLength
super.init(name: name)
numberOfSides = 3
}
var perimeter: Double{
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
override func simpleDescription() -> String {
return "An equilateral triangle with sides of length \(sideLength)."
}
}
var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
triangle.perimeter
triangle.perimeter = 9.9
triangle.sideLength
在 perimeter 的 setter 中,新的值的名字就是 newValue 。你可以提供一个在 set 之后提供一个不冲突的名字。
苹果前不久发布了最新的iOS 8.4.1系统更新,封堵了目前iOS 8.4系统的越狱漏洞,但是有不少用户升级到iOS 8.4.1以后,遇到了耗电严重的现象,在苹果的技术支持论坛上,已经有不少用户反映了iOS 8.4.1的耗电问题。
16777215今天早些时候,苹果正式推出了新的系统更新,而它就是iOS 8.4.1,如果不出意外,这将是iOS 9发布前,最后一个系统更新了。
16777215苹果在今天凌晨向开发者发布了 iOS 8.4.1 第一个测试版,距离 iOS 8.4 正式版发布相隔两周。iOS 8.4.1 可能是 iOS 8 最后一次版本更新,iOS 8.4.1 编译号为 12H304,可以在苹果开发者中心下载。目前,我们还不清楚 iOS 8.4.1 的改变,可能只是修复 Bug,至于大家所关心的iOS 8.4的越狱漏洞是否封堵,目前也是不得而知,期待开发者们公布消息。
1015808就在昨晚11点钟,苹果向用户推送了iOS8.4 的正式版本,但仅过不到一个小时,来自中国的PP越狱助手团队就宣布iOS8.4正式版成功完美越狱!这也创造了iOS系统正式版越狱时间最快的历史记录。今天小编就为大家带来iOS8.4的越狱教程,希望能大家喜欢!
16777215太极越狱工具现在支持ios8.1.3~8.3完美越狱啦,并且支持全系列苹果设备,鉴于目前iOS8.3版系统相对稳定,所以有很多果粉们都跃跃欲试,有不少果粉因为电脑没有装苹果驱动及其他原因会出现8.3越狱卡20%的问题,也就是ios8.3越狱卡在百分之20就不动了。小编找到了很好的解决方法,下面提供给大家。
16777215中国太极团队刚刚发布了iOS 8.1.3-8.3完美越狱工具,全球第一个攻克了iOS 8.3。虽然现在的iOS越狱已经有很简单,但毕竟是刚刚发布,仍然需要注意不少问题。
14237696苹果今天向开发者发布了 iOS 8.4 第一个测试版,距离 iOS 8.3 正式版发布仅仅相隔5天。这次的测试版编译号为 12H407d,开发者可以在 iOS 开发者中心下载,此外,苹果还发布了 Xcode 6.4 测试版。iOS 8.4 包含全新设计的音乐应用,演唱者界面包含全新设计展示歌手的图片,还有个性化的播放列表。全新音乐应用包含迷你播放器,全新设计的“正在播放”,全局搜索方方便用户在应用任意界面发起搜索,以及简化了 iTunes 广播的设计。
16777215越狱无非是为了让自己的 iOS 设备用起来更舒服,那么怎样才能更舒服呢?换个自己喜欢的字体、换个美化了的图标都可以,现在现如今iOS 8.1.2都可以完美越狱了,还带等什么赶紧去换字体去,至于那些不会换字体的亲们,小编现在就来教你怎么换!
16777215苹果今天发布了 iOS 8.3 升级补丁,这是 iOS 8 系统发布后第三个重大升级。iOS 8.3 第一个测试版在今年2月发送给开发者,公共测试版在今年3月发布。iOS 8.3 增加了很多新功能并改进了系统的设计。目前,用户可以通过 OTA 无线升级。此外,苹果还为 Apple TV 准备了7.2 软件升级。
16777215苹果今天发布了 iOS 8.3 第一册测试版,而一周前发布的 iOS 8.2 第五个测试版也正在测试之中。iOS 8.3 的编译号为12F5027d,这次发布的还包括 Xcode 6.3 测试版以及 Swift 1.2。根据测试,iOS 8.3 似乎移除了 iCloud 照片图库的测试标识,并开始提供全新CarPlay 功能,也就是无线连接。
2772992