> 文章列表 > Swift入门

Swift入门

Swift入门

基本数据类型

  • Int、UInt:整数型、非负整数
  • Float、Double:单精度浮点数、双精度浮点数
  • Bool:布偶值
  • String、Character:字符串、字符

其他类型

  • Array, Dictionary:数组、字典
  • Struct
  • Class
  • var:变量
  • let:常量,必须在声明的时候赋值

类型别名

  • typealias:类型别名
	typealias newname = type/// 定义Feet类型为Int类型typealias Feet = Int

可选类型

  • Optional可选类型:用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x “或者"那儿没有值nil”。
	// 两种写法等价var optionalInteger: Int?var optionalInteger: Optional<Int>
  • 强制解析:当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号!来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"
	var myString:String?myString = "Hello, Swift!"if myString != nil {// 强制解析print( myString! )}else{print("myString 值为 nil")}
  • 自动解析:你可以在声明可选变量时使用感叹号!替换问号?。这样可选变量在使用时就不需要再加一个感叹号!来获取值,它会自动解析。
	// 自动解析var myString:String!myString = "Hello, Swift!"if myString != nil {// 自动解析print(myString)}else{print("myString 值为 nil")}

类型标注

	// 方法一var varB:FloatvarB = 3.14159print(varB)// 方法二let constB:Float = 3.14159print(constB)

print输出

  • \\()的使用
	let name = "菜鸟教程"let site = "http://www.runoob.com"print("\\(name)的官网地址为:\\(site)")
  • 转义字符
转义字符 含义
\\0 空字符
\\\\ 反斜线 \\
\\n 换行符
\\r 回车符
\\’ 单引号
\\" 双引号

其他进制表示

  • 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀
	let decimalInteger = 17           // 17 - 十进制表示let binaryInteger = 0b10001       // 17 - 二进制表示let octalInteger = 0o21           // 17 - 八进制表示let hexadecimalInteger = 0x11     // 17 - 十六进制表示

区间运算符

  • 1...5 区间值为 1, 2, 3, 4 和 5
  • 1..< 5 区间值为 1, 2, 3, 和 4
	for index in 1...5 {print("闭区间运算符:")}for index in 1..<5 {print("半开区间运算符:")}

合并空值运算符:??

  • 合并空值运算符 a ?? b 如果可选项 a 有值则展开,如果没有值,是 nil,则返回默认值 b
  • 表达式 a 必须是一个可选类型,表达式 b 必须与 a 的存储类型相同
  • 合并空值运算符,实际上是三元运算符作用到 Optional 上的缩写 a != nil ? a! : b
  • 如果 a 的值是非空,b的值将不会被考虑,也就是合并空值运算符是短路的

函数

  • runoob:函数名, name、site:参数,String:返回值
func runoob(name: String, site: String) -> String {return name + site
}
// 调用
print(runoob(name: "菜鸟教程:", site: "www.runoob.com"))
  • 元组tuple类型让多个值作为一个复合值从函数中返回
func minMax(array: [Int]) -> (min: Int, max: Int) {var currentMin = array[0]var currentMax = array[0]for value in array[1..<array.count] {if value < currentMin {currentMin = value} else if value > currentMax {currentMax = value}}return (currentMin, currentMax)
}let bounds = minMax(array: [8, -6, 2, 109, 3, 71])
print("最小值为 \\(bounds.min) ,最大值为 \\(bounds.max)")
  • 没有返回值
func runoob(site: String) {print("菜鸟教程官网:\\(site)")
}
runoob(site: "http://www.runoob.com")
  • 可变参数
func vari<N>(members: N...){for i in members {print(i)}
}
vari(members: 4,3,5)
vari(members: 4.5, 3.1, 5.6)
vari(members: "Google", "Baidu", "Runoob")