【iOS】Swift数据类型、运算符、新增语句等小结

来源:互联网 发布:域名 expiration date 编辑:程序博客网 时间:2024/06/04 00:40

总结复习一些基本的东西,主要是与OC不同的以及新增的。

一、基本数据类型

Int、Float、Double、Bool、Character、String(首字母都大写)
Array、Dictionary、元组类型(Tuple)、可选类型(Optional)

指定数据类型:

let a:Int = 10  //指定数据类型。 一般不需要指定,会自动判断类型。 (使用时需初始化)
1.1 整形

//1.1整形let maxInt = Int.max     //获取Int类型的最大值let minInt = Int.minlet a1 = 10    //十进制let a2 = 0b1010  //二进制以0b开头let a3 = 0o12   //八进制以0o开头let a4 = 0xA    //十六进制0x

1.2 浮点

//1.2浮点型Float,Doublelet b1 = 0.123    //默认是Doublelet b2 = 0.123e3  //123.0

1.3 Bool ,跟上主流了。。。。

//1.3Bool (不是YES/NO了)let c1 = truelet c2 = false

1.4  元祖

//1.4元组. 可以是N个任意类型的数据let tup1 = (age:1,name:"abc",hight:2,jj:0.1)  //带元素名称let tup2 = (1,"abc",2,0.1)   //省略元素名称var tup3:(Int,String) = (1,"haha")   //指定类型. (指定类型后就不能再写元素名称了)var (t1,t2) = tup3   //直接弄2个变量接收元祖var (_,t3)  = tup3   //只接收一个

1.5 可选(要么返回该值,要么为nil

var possibleNumber = "123"var convertedNumber:Int? = possibleNumber.toInt()   //转换可能失败. (在类型后面加?表示可选)//获取可选类型的值,需要在后面加上!if convertedNumber != nil{    println("convertedNumber的值为\(convertedNumber!)")}//OC中的nil指向一个不存在的对象, 而Swift中nil不是指针,而是一个缺省值//possibleNumber = nil   //普通的变量是不能赋值为nil//convertedNumber = nil    //可选类型能赋值为nil, 当没有值时,自动赋值为nilif let my = convertedNumber {    println("这是可选绑定!\(my)")}


二、数据的输出格式 && 类型转换 && 类型别名

简化了不少。

//2.1可以在数字中增加额外的0或_, 增强可读写let d1 = 000123let d2 = 00123.0012300let d3 = 1_2_3//let d4 = _123   //错误

//2.2类型转换let e1 = 1let e2 = 0.12//let e3 = e1 + e2  //错误, 类型不同不能直接相加let e3 = Double(e1) + e2   //类型转换

类型别名就相当于C中的typedef

//2.3 类型别名 typealiastypealias XNInt = Intlet test:XNInt = 10

三、新加的几个运算符

3.1 范围运算符,上篇WWDC上用过

//3.1 范围运算符..<   ...for index1 in 1...10{ }  //表示闭包[1 10]for index2 in 1..<10{ }  //表示半闭合[1 10)

3.2 溢出运算符。(新增加的,可用来处理数据溢出的情况)

&+溢出加 &-溢出减 &*溢出乘 &/溢出除 &%溢出余

let f1 = UInt.max//let f2 = x + 1  //这样写会上溢let f2 = f1 &+ 1   //溢出加. 值为0. 变为溢出后的最小值let g1 = 10//let g2 = g1 / 0  //会报错let g2 = g1 &/ 0   //值为0//let g3 = g1 % 0  //会报错let g3 = g1 &% 0   //值为0

3.3 一些注意的地方

非0即真这种C语言的东西遭淘汰!赋值更加灵活,且赋值没有返回值。

let (x,y) = (1,2)    //整体赋值//if(x = y){ }    //这样写是错误的. 能防止将==写成=//if(10){ }     //这样写也是错误的. 非0即真已经不适用.if(true){ }

四、流程控制语句

新增加for in语句,同时switch语句更加灵活。

4.1 循环for in

for h1 in 1...10{    println(h1)}for _ in 1..<10{    //不需要用到范围中的值时,直接忽略用_    println("####")}
4.2 标签 (可用来跳出指定循环,了解即可)
xn:    for _ in 1...3 {        println("***")        for tmp in 1...5{            println("###")            //指定退出            if tmp == 3{                break xn            }        }}
4.3  Switch语句

1)与C语言中的不同. 不必每个case下写break,自动break
2)每个case后面必须有可执行语句, 否则会报错
3)每个case都可以匹配多个条件, 也可以填写一个范围
4)switch要保证处理所有的情况,一定加上default.
5)case还可以匹配元祖

let score = 10switch score{case 0...3:    println("差")case 4,5,6,7:    println("良")case 8...10:    println("优")default:    println("超神")}

评价:确实简化不少,写起来也挺顺手。

示例代码见http://github.com/xn4545945/SwiftLearning


参考:

The Swift Programming Language  

Apple Dev Center


转载请注明出处:http://blog.csdn.net/xn4545945  


2 0