Swift 编程语言1

Swift 编程语言

1、关键字 let 来声明常量,使用关键字 var 来声明变量

2、你可以在声明一个变量或常量的时候提供类型标注,来明确变量或常量能够储存值的类型。添加类型标注的方法是在变量或常量的名字后边加一个冒号,再跟一个空格,最后加上要使用的类型名称。

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
print(friendlyWelcome)
// 输出 "Bonjour!"
print("The current value of friendlyWelcome is \(friendlyWelcome)")
// 输出 "The current value of friendlyWelcome is Bonjour!"

3、Swift 中的注释和 C 的注释基本相同。单行注释用两个斜杠开头( // );多行的注释以一个斜杠加一个星号开头( /* ),以一个星号加斜杠结尾( */ )。

4、和许多其他的语言不同,Swift 并不要求你在每一句代码结尾写分号( ; ),当然如果你想写的话也没问题。总之,如果你想在一行里写多句代码,分号还是需要的。

5、Double 有至少 15 位数字的精度,而 Float 的精度只有 6 位。具体使用哪种浮点类型取决于你代码需要处理的值范围。在两种类型都可以的情况下,推荐使用 Double 类型。

6、只在的确需要存储一个和当前平台原生字长度相同的无符号整数的时候才使用 UInt 。其他情况下,推荐使用 Int ,即使已经知道存储的值都是非负的。如同类型安全和类型推断中描述的那样,统一使用 Int 会提高代码的兼容性,同时可以避免不同数字类型之间的转换问题,也符合整数的类型推断。

7、整数型字面量可以写作:一个十进制数,没有前缀;一个二进制数,前缀是 0b;一个八进制数,前缀是 0o;一个十六进制数,前缀是 0x

8、用 typealias 关键字定义类型别名。

typealias AudioSample = UInt16

9、元组:

let http404Error = (404, "Not Found")
// http404Error is of type (Int, String), and equals (404, "Not Found")
print("The status code is \(http404Error.0)")
// prints "The status code is 404"
print("The status message is \(http404Error.1)")
// prints "The status message is Not Found"

10、你可以通过给可选变量赋值一个 nil 来将之设置为没有值:

var serverResponseCode: Int? = 404
// serverResponseCode contains an actual Int value of 404
serverResponseCode = nil
// serverResponseCode now contains no value

nil 不能用于非可选的常量或者变量,如果你的代码中变量或常量需要作用于特定条件下的值缺失,可以给他声明为相应类型的可选项。

如果你定义的可选变量没有提供一个默认值,变量会被自动设置成 nil 。

var surveyAnswer: String?
// surveyAnswer is automatically set to nil

11、你可以利用 if 语句通过比较 nil 来判断一个可选中是否包含值。利用相等运算符 ( == )和不等运算符( != )。

if convertedNumber != nil {
    print("convertedNumber contains some integer value.")
}
// prints "convertedNumber contains some integer value."

一旦你确定可选中包含值,你可以在可选的名字后面加一个感叹号 ( ! ) 来获取值,感叹号的意思就是说“我知道这个可选项里边有值,展开吧。”这就是所谓的可选值的强制展开。

if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// prints "convertedNumber has an integer value of 123."

可选项绑定:可以使用可选项绑定来判断可选项是否包含值,如果包含就把值赋给一个临时的常量或者变量。可选绑定可以与 if 和 while 的语句使用来检查可选项内部的值,并赋值给一个变量或常量。

在 if 语句中,这样书写可选绑定:
if let constantName = someOptional { 
    statements 
} 
你可以像上面这样使用可选绑定而不是强制展开来重写 possibleNumber 这个例子:
if let actualNumber = Int(possibleNumber) {
    print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
} else {
    print("\'\(possibleNumber)\' could not be converted to an integer")
}
// prints "'123' has an integer value of 123"
代码可以读作:“如果 Int(possibleNumber) 返回的可选 Int 包含一个值,将这个可选项中的值赋予一个叫做 actualNumber 的新常量。”如果转换成功,常量 actualNumber 就可以用在 if 语句的第一个分支中,他早已被可选内部的值进行了初始化,所以这时就没有必要用 ! 后缀来获取里边的值。在这个栗子中 actualNumber 被用来输出转换后的值。常量和变量都可以使用可选项绑定,如果你想操作 if 语句中第一个分支的 actualNumber 的值,你可以写 if var actualNumber 来代替,可选项内部包含的值就会被设置为一个变量而不是常量。你可以在同一个 if 语句中包含多可选项绑定,用逗号分隔即可。如果任一可选绑定结果是 nil 或者布尔值为 false ,那么整个 if 判断会被看作 false 。下面的两个 if 语句是等价的:
if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
 
if let firstNumber = Int("4") {
    if let secondNumber = Int("42") {
        if firstNumber < secondNumber && secondNumber < 100 {
            print("\(firstNumber) < \(secondNumber) < 100")
        }
    }
}
// Prints "4 < 42 < 100"
隐式展开可选项
如上所述,可选项明确了常量或者变量可以“没有值”。可选项可以通过 if 语句来判断是否有值,如果有值的话可以通过可选项绑定来获取里边的值。有时在一些程序结构中可选项一旦被设定值之后,就会一直拥有值。在这种情况下,就可以去掉检查的需求,也不必每次访问的时候都进行展开,因为它可以安全的确认每次访问的时候都有一个值。这种类型的可选项被定义为隐式展开可选项。通过在声明的类型后边添加一个叹号( String! )而非问号( String? ) 来书写隐式展开可选项。与在使用可选项时在名称后加一个叹号不同的是,声明的时候要把叹号放在类型的后面。在可选项被定义的时候就能立即确认其中有值的情况下,隐式展开可选项非常有用。如同无主引用和隐式展开的可选属性中描述的那样,隐式展开可选项主要被用在 Swift 类的初始化过程中。隐式展开可选项是后台场景中通用的可选项,但是同样可以像非可选值那样来使用,每次访问的时候都不需要展开。下面的栗子展示了在访问被明确为 String 的可选项展开值时,可选字符串和隐式展开可选字符串的行为区别:
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // requires an exclamation mark
 
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // no need for an exclamation mark
你可以把隐式展开可选项当做在每次访问它的时候被给予了自动进行展开的权限,你可以在声明可选项的时候添加一个叹号而不是每次调用的时候在可选项后边添加一个叹号。当你使用隐式展开可选项值时,Swift 首先尝试将它作为普通可选值来使用;如果它不能作为可选项,Swift 就强制展开值。在上面的代码中,可选值 assumedString 在给 implicitString 赋值前强制展开,因为 implicitString 有显式的非可选 String 类型。在下面的代码中, optionalString 没有显式写明类型所以它是普通可选项。
let optionalString = assumedString
// The type of optionalString is "String?" and assumedString isn't force-unwrapped.
如果隐式展开可选项结果是 nil ,你还尝试访问它的值,你就会触发运行时错误。结果和在没有值的普通可选项后面加一个叹号一样。
你可以和检查普通可选项一样检查隐式展开可选项是否为 nil :
if assumedString != nil {
    print(assumedString)
}
// prints "An implicitly unwrapped optional string."
你也可以使用隐式展开可选项通过可选项绑定在一行代码中检查和展开值:
if let definiteString = assumedString {
    print(definiteString)
}
// prints "An implicitly unwrapped optional string."
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值