Swift 中的变量(var let , Optional)

相对于C或者OC,Swift在变量方面引入许多新概念。比如区分可变变量和定义和赋值一次,多次使用的 常量。以及值可以为空的 可选类型 optional 变量.


1) 基本变量和常量用法

let来声明常量,使用var来声明变量。一个常量的值,在编译的时候,并不需要有明确的值,但是你只能为它赋值一次。也就是说你可以用常量来表示这样一个值:你只需要决定一次,但是需要使用很多次。

var myVariable = 42
myVariable = 50
let myConstant = 42
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70

值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换

let label = "The width is"
let width = 94
let widthLabel = label + String(width)

有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠。例如:

let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."

2)数组和字典

用方括号[]来创建数组和字典,并使用下标或者键(key)来访问元素

var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
    "Malcolm": "Captain",
    "Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"

创建一个空数组或者字典,使用初始化语法。

let emptyArray = [String]()
let emptyDictionary = [String: Float]()

如果类型信息可以被推断出来,你可以用[][:]来创建空数组和空字典——就像你声明变量或者给函数传参数的时候一样。

shoppingList = []
occupations = [:]

let x: (String, Int, Double) = ("Hello", 5, 0.9)
let (word, number, value) = x // 元组元素命名,这样访问时候可通过名字
print(word) // hello
print(number) // 5


也可以在一开始定义时候就命名
let x: (w: String, i: Int, v: Double) = ("hello", 5, 0.9)

print(x.w)
print(x.i)

3)可选类型Optional

可选类型(optionals)来处理值可能缺失的情况。实际上,是一个枚举类型:

<span style="font-size:12px;">enum Optional<T> {
case None
case Some(T)
}
let x: String? = nil 
//意味着
let x = Optional<String>.None
let x: String? = "Hello"
//意味着
let x = Optional<String>.Some("Hello") </span>

场景举例,一个字符串转整形函数,比如 String2Int() ,有时候可以正常转换,但是遇到 “hello” 这样的字符串转整形,只能是一个空值。

可选类型变量的串联

var display: UILabel?

if let label = display {
	if let text = label.text {
		let x = text.hashValue
		...
	}
}

//means 

if let x = display?.text?.hashValue {...}

可选类型的缺省操作

let s: String? = ... // 可能为空
if s != nil {
	display.text = s
} else {
	display.text = " "
}

//可以简单写成

display.text = s ?? " "


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值