Option可选值可选值(二)
2015-07-01 15:38
246 查看
//: Playground - noun: a place where people can play
import Cocoa
var str1 =
"供选链接和强制拆包的不同。"
class Person {
var residence:
Residence?//供选连接
}
class Residence {
var rooms = [Room]()
var numberOfRooms:
Int {
return
rooms.count
}
subscript(i:
Int) ->
Room {
return
rooms[i]
}
func printNumberOfRooms() {
println("The number of rooms is
\(numberOfRooms)")
}
var address:
Address?
}
//如果你创建一个新的 Person
实例,它的 residence
属性由于是被定义为供选的,此属性将默认初始化为空:
//let john = Person()
/*
如果你想使用声明符!强制拆包获得这个人 residence
属性 numberOfRooms 属性值,将会引发运行时错误,因为这时没有可以供拆包的 residence
值。
*/
//let roomCount = john.residence!.numberOfRooms
//供选链接提供了一种另一种获得 numberOfRooms
的方法。利用供选链接,使用问号来代替原来!的位置:
//let roomCount = john.residence?.numberOfRooms
/*
if let roomCount = john.residence?.numberOfRooms {
println("john's residence has \(roomCount) room(s).")
} else {
println("Unable to retrieve the of rooms.")
}
john.residence = Residence()
if let roomCount = john.residence?.numberOfRooms {
println("john's residence has \(roomCount) room(s).")
} else {
println("Unable to retrieve the of rooms.")
}*/
/*
为供选链接定义模型类
这些类是由上面的 Person
和 Residence 模型通过添加一个 Room
和一个 Address
类拓展来。
*/
class Room {
let name:
String
init(name:
String) {
self.name = name
}
}
class Address {
c89b
var buildingName:
String?
var buildingNubmer:
String?
var street:
String?
func buildingIdentifier() ->
String? {
if (buildingName !=
nil) {
return
buildingName
}
else
if (buildingNubmer !=
nil) {
return
buildingNubmer
}
else {
return
nil
}
}
}
//通过供选链接调用属性
let john =
Person()
if
let roomCount =
john.residence?.numberOfRooms {
println("John's residence has
\(roomCount) room(s).")
}
else {
println("Unable to retrieve the number of rooms.")
}
//通过供选链接调用方法
var uu =
9
if(john.residence?.printNumberOfRooms()
!= nil) {
println("It was possible to print the number of rooms.")
}
else {
println("It was not possible to print the number of rooms.")
}
//使用供选链接调用角标
if
let firstRoomName =
john.residence?[0].name {
println("The first room name is
\(firstRoomName).")
}
else {
println("Unable to retrieve the first room name.")
}
import Cocoa
var str1 =
"供选链接和强制拆包的不同。"
class Person {
var residence:
Residence?//供选连接
}
class Residence {
var rooms = [Room]()
var numberOfRooms:
Int {
return
rooms.count
}
subscript(i:
Int) ->
Room {
return
rooms[i]
}
func printNumberOfRooms() {
println("The number of rooms is
\(numberOfRooms)")
}
var address:
Address?
}
//如果你创建一个新的 Person
实例,它的 residence
属性由于是被定义为供选的,此属性将默认初始化为空:
//let john = Person()
/*
如果你想使用声明符!强制拆包获得这个人 residence
属性 numberOfRooms 属性值,将会引发运行时错误,因为这时没有可以供拆包的 residence
值。
*/
//let roomCount = john.residence!.numberOfRooms
//供选链接提供了一种另一种获得 numberOfRooms
的方法。利用供选链接,使用问号来代替原来!的位置:
//let roomCount = john.residence?.numberOfRooms
/*
if let roomCount = john.residence?.numberOfRooms {
println("john's residence has \(roomCount) room(s).")
} else {
println("Unable to retrieve the of rooms.")
}
john.residence = Residence()
if let roomCount = john.residence?.numberOfRooms {
println("john's residence has \(roomCount) room(s).")
} else {
println("Unable to retrieve the of rooms.")
}*/
/*
为供选链接定义模型类
这些类是由上面的 Person
和 Residence 模型通过添加一个 Room
和一个 Address
类拓展来。
*/
class Room {
let name:
String
init(name:
String) {
self.name = name
}
}
class Address {
c89b
var buildingName:
String?
var buildingNubmer:
String?
var street:
String?
func buildingIdentifier() ->
String? {
if (buildingName !=
nil) {
return
buildingName
}
else
if (buildingNubmer !=
nil) {
return
buildingNubmer
}
else {
return
nil
}
}
}
//通过供选链接调用属性
let john =
Person()
if
let roomCount =
john.residence?.numberOfRooms {
println("John's residence has
\(roomCount) room(s).")
}
else {
println("Unable to retrieve the number of rooms.")
}
//通过供选链接调用方法
var uu =
9
if(john.residence?.printNumberOfRooms()
!= nil) {
println("It was possible to print the number of rooms.")
}
else {
println("It was not possible to print the number of rooms.")
}
//使用供选链接调用角标
if
let firstRoomName =
john.residence?[0].name {
println("The first room name is
\(firstRoomName).")
}
else {
println("Unable to retrieve the first room name.")
}
相关文章推荐
- JS option location 页面跳转实现代码
- IE中鼠标经过option触发mouseout的解决方法
- JavaScript Select和Option列表元素上下左右移动
- 用jQuery解决IE不支持的option disable属性
- firefox下获取下列框选中option的text的代码
- javascript option onclick事件ie解决方案 兼容ie,firefox
- IE不支持option的display样式,只能使用remove和add
- javascript 动态创建 Option选项
- JS动态添加与删除select中的Option对象(示例代码)
- js获取select选中的option的text示例代码
- JS动态添加与删除select中的Option对象(示例代码)
- js添加select下默认的option的value和text的方法
- javascript各浏览器中option元素的表现差异
- js select option对象小结
- js 操作select与option(示例讲解)
- js动态改变select选择变更option的index值示例
- Linux 系统 防火墙
- 记一次ORA-8103错误的处理
- wan5