Swift学习笔记——基础语法

Swift学习笔记——基础语法

本文是针对新手学习Swift笔记,记录学习过程的一些体会以及一些学习过程中的理解:

基础语法

第一次接触Swift或者Oc语法的时候,总感觉有点像脚本语言,不像Java或者C/C++。当然这也只是个人的体会而已。


  • 常量和变量
    比较容易理解:下面这段代码分别定义类一个常量maximumNumberOfLoginAttempts和一个变量currentLoginAttempt。关键字分别是let和var。let这个与java final,C/C++的const相同功能。Swift var关键字可以通过推断来判别变量的类型(当然你也可以直接声明变量的类型,代码welcomeMessage就是标注了类型(String))。
   let maximumNumberOfLoginAttempts = 10
   var currentLoginAttempt = 0
   var welcomeMessage: String
  • 基本类型
    基本类型包含Int,Float,Double,String等类型。
    Swift 提供了8, 16, 32和64位的有符号和无符号整数类型(UInt8, Int8; UInt16, Int16; UInt32, Int32; UInt64, Int64)特别的:

    1. 在32位平台上, Int 和 Int32 长度相同。
    2. 在64位平台上, Int 和 Int64 长度相同。
    3. 在32位平台上,UInt 和 UInt32 长度相同。
    4. 在64位平台上, UInt 和 UInt64 长度相同。

    浮点类型比整数类型表示的范围更大, 可以存储比Int类型更大或者更小的数字。 Swift 提供了两种有符号浮点数类型:
    Double——表示64位浮点数,当你需要存储很大或者很高精度的浮点数时请使用此类型;
    Float——表示32位浮点数,精度要求不高的话可以使用此类型。

  • 类型转换
    类型转换比较简单,举例子来说:

var a = 3.14; // a is  float
var b = Int(a); // b = 3 is Int
  • 类型别名
    关键字typealias 是类似于C/C++中的typedef,可以定义类型。
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound  = 0
  • 元组
    在java,C/C++中没有这个概念,Swift或者Oc中有元组这种数据类型。元组( tuples) 把多个值组合成一个复合值。 元组内的值可以是任意类型, 并不要求是相同类型。从下面例子看,元组有点类似Java中Map。当然这个只是说可以包含多种类型的数据。元组具有和下标配合使用等特性
let http404Error = (404, "Not Found")  
// http404Error 的类型是 (Int, String), 值是 (404, "Not Found")

let (statusCode, statusMessage) = http404Error
println("The status code is \(statusCode)")
// 输出 "The status code is 404"

println("The status message is \(statusMessage)")
// 输出 "The status message is Not Found"

let (justTheStatusCode, _) = http404Error
println("The status code is \(justTheStatusCode)")

println("The status code is \(http404Error.0)")
// 输出 "The status code is 404"
println("The status message is \(http404Error.1)")
// 输出 "The status message is Not Found"

let http200Status = (statusCode: 200, description: "OK")
println("The status code is \(http200Status.statusCode)")
// 输出 "The status code is 200"
println("The status message is \(http200Status.description)")
// 输出 "The status message is OK"
  • 可选类型
    可选类型是Swift一种独有特性,Java,C/C++以及OC都不包含这个特性。使用可选类型( optionals) 来处理值可能缺失的情况。 可选类型表示:
    • 有值, 等于 x
    • 没有值
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"

if convertedNumber {
   println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
   println("\(possibleNumber) could not be converted to an integer")
}  
// 输出 "123 has an integer value of 123"
  • 可选绑定
    使用可选绑定( optional binding) 来判断可选类型是否包含值, 如果包含就把值赋给一个临时常量或者变量。 可选绑定可以用在 if 和 while 语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
if let constantName = someOptional {
   statements
}

if let actualNumber = possibleNumber.toInt() {
   println("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
   println("\(possibleNumber) could not be converted to an integer")
}
// 输出 "123 has an integer value of 123"
  • nil
    你可以给可选变量赋值为 nil 来表示它没有值:
var serverResponseCode: Int? = 404
// serverResponseCode 包含一个可选的 Int 值 404
serverResponseCode = nil
// serverResponseCode 现在不包含值

var surveyAnswer: String?
// surveyAnswer 被自动设置为 nil
  • 隐式解析可选类型
    隐式解析可选类型是把想要用作可选的类型的后面的问号( String? ) 改成感叹号( String! ) 来声明一个隐式解析可选类型。可以把隐式解析可选类型当做一个可以自动解析的可选类型。 你要做的只是声明的时候把感叹号放到类型的结尾, 而不是
    每次取值的可选名字的结尾。
let possibleString: String? = "An optional string."
println(possibleString!) // 需要惊叹号来获取值
// 输出 "An optional string."

let assumedString: String! = "An implicitly unwrapped optional string."
println(assumedString) // 不需要感叹号
// 输出 "An implicitly unwrapped optional string."

至此基础语法部分差不多完了,其他一些不重要的,或者说其他语言都有的,就没有叙述。下一节将讲述基本运算符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值