Option可选值(一)

//: Playground - noun: a place where people can play

import Cocoa

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?

}

class Room {

let name:
String

init(name:
String) {

self.name = name

}

}

class Address {

var buildingName:String?

var buildingNubmer:String?

var street:
String?

func buildingIdentifier() ->String? {

if (buildingName !=nil)
{

return
buildingName

}else
if (buildingNubmer !=
nil) {

returnbuildingNubmer

}else {

return
nil

}

}

}

let john =Person()

//let johnsHouse = Residence()

//johnsHouse.rooms[0] = Room(name: "Living Room")

//john.residence = johnsHouse

/*

你可以将多层供选链接连接在一起,可以掘取模型内更下层的属性方法和角标。然而多层供选链接不能再添加比已经返回的供选值更多的层。
也就是说:

如果你试图获得类型不是供选类型,由于供选链接它将变成供选类型。如果你试图获得的类型已经是供选类型,由于供选链接它也不会提高供选性。因此:

如果你试图通过供选链接获得 Int 值,不论使用了多少层链接返回的总是 Int?。相似的,如果你试图通过供选链接获得
Int?值,不论使用了多少层链接返回的总是 Int?。

*/

let johnsAddress =Address()

johnsAddress.buildingName ="The"

johnsAddress.street ="Laurel"

john.residence!.address =johnsAddress

//链接供选返回值的方法

//if let buildingIdentifier = john.residence?.address?.buildingIdentifier()?.uppercaseString {

//    println("John‘s building identifier is \(buildingIdentifier).")

//}

//连接多层链接

//if let johnsStreet = john.residence?.address?.street {

//    println("John‘s street name is \(johnsStreet).")

//} else {

//    println("Unable to retrieve the address.")

//}

//使用供选链接调用角标

//if let firstRoomName = john.residence?[0].name {

//    println("The first room name is \(firstRoomName).")

//} else {

//    println("Unable to retrieve the first room name.")

//}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 19:51:38

Option可选值(一)的相关文章

Option可选值可选值(二)

//: 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)

C#函数式编程之可选值

在我们的实际开发中已经会遇到可空类型,而在C#中自从2.0之后就提供了可空类型(Nullable<T>),普通的值类型是不可以赋值为NULL,但是在类型的后面加上问号就变成了可空类型,这样就可以赋值为NULL了.当然这样的方式也可以用于函数式编程中,但函数式编程有自己的独特方式来解决这种问题,今天我们将围绕这个问题,虽然篇幅比较少,但也请读者可以阅读完. 我们当然不能改变语言的设计,所以我们只能使用现有的来实现可选值.这里我们利用类来实现,下面是Option<T>初期的代码: 1

可选值

在swift中可选值用于定义变量,可选值有两种状态:有数值,数值为空 (可选值可以用if语句进行判断) var optValue: Int? = 8; if optValue{//一般用于if中的只能为bool类型而此时用可选类型也是可以的 println(optvalue); } //对可选值进项强制解析(有一定的风险若将optValue赋值为空则此时运行时候就会报错) var svalue: Int = optValue! println(savlue); //一般情况下我们用可选绑定取代强

Swift编程语言学习1.6——可选值

可选值 使用可选(optionals)来处理值可能缺失的情况.可选表示: 有值,等于 x   或者没有值 注意: C 和 Objective-C 中并没有可选这个概念.最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示"缺少一个合法的对象".然而,这只对对象起作用--对于结构体,基本的 C 类型或者枚举类型不起作用.对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失.这种方法假设方法的

Jquery操作select,左右移动,双击移动 取到所有option的值

$(function () { function MoveItem(fromId, toId) { $("#" + fromId + " option:selected").each(function () { $(this).appendTo($("#" + toId + ":not(:has(option[value=" + $(this).val() + "]))")); }); $("#&

关于swift的可选值(optional)

关于可选值optional 不同于OC,swift引入了一个新的概念——可选值,了解这个optional,对于swift的学习至关重要 概念定义:可以有值也可以没有值(nil)的一个类型.换句话说,它有两个状态:有值,没有值(nil) 按我的理解,可选值是带有布尔类型加持的普通类型 如何定义一个可选值呢? 上面的代码简单定义了一个叫做optionalValue的可选值. 和普通的变量定义没有太大区别,唯一不同在于,这里多了一个问号,?是对普通值的封包 要加在类型后面,也就是说,在变量或者常量的所

swift的可选值(optional)

苹果那文档写了一大堆也没有好好的写一下可选值(optional)这个东西.就是在有一个“Optional Chaining”的章节,但是也不是很充分的说明.最后找了半天在“the basics”里墨迹了几句.如果你没找到optional这个东西的话,那你可能也错过了一个很重要的东西,非optional类型的变量,这个变量的值不能是nil.这一点和ObjC以及其他的编程语言如C#.Java什么的差别很大. var example : String = "hello world" exam

jquery获得select option的值和对select option的操作

1.jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 2. var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Text 3. var checkValue=$("#selec

超链接a标签的属性target的可选值有哪些以及区别

超链接a标签的属性target的可选值有哪些以及区别 1.<a target="_blank"></a> 2.<a target="_parent"></a> 3.<a target="_self"></a> 4.<a target="_top"></a> 5.<a target="new"><