标签:
或许网络上有很多成型的介绍,我只想写下来留给自己。欢迎批评。开撸!
1、第一个程序,Hello,world!古人云,学会了Hello,world!这门语言你就掌握了一半了。
print("Hello,World!")
已经学了这门语言的一半,你是不是很开心?刚开始写这句代码的时候,让我想起了久违的Pascal,一样的书写方式,字符串没有OC里的@来修饰。只是Pascal现在已经销声匿迹了(我一直没发现有用Pascal做开发的公司),很是怀念。现在的脑海里依稀记得04年的第一句Hello,World!
2、定义常量和变量
swfit中,对象或数据的定义,只有两种 let 和 var。不再需要像OC里边需要指定对象的类型,例如
int i = 1; UIView *v = UIView()
常量定义 let i = 1;变量定义 var j = 2; j =3。Xcode里边,系统会智能判断,你定义的类型是否合理,假设你定义一个var i = 1,但再后边并没有对i 的值进行修改,那么系统会给你警示,i的定义应该用let。同样的,如果用let修饰,后边又进行了赋值操作,那么系统会给一个警告,需要用var。数据的类型是根据赋值的内容进行推导出来的。
let u = UIView() let i = 1 let j:Double = 2 var b = UIButton() b = UIButton(frame:frame)
上面几行代码给出了几条语句,根据系统推断:u 是 UIView,i 是Int ,j是Double(可以在变量后边加:然后注明该变量的准确类型,此处如果不加,系统会被认定是Int类型),b是UIButton类型。
3、没有隐式的类型转换。再OC中,如下代码是可以正常编译的
Int i = 1 Double j = 2 j = j + i
但是在Swift中,就会报错{ Binary operator ‘+‘ cannot be applied to operands of type ‘Double‘ and ‘Int‘},Double 和 Int 无法操作。需要将运算符两边转换成相同的数据类型,如下述代码
let i = 1 var j : Double = 2 j = j + Double(i)
当然,也可以将Double转成Int,注意:Double转成Int会省略小数位,并不会四舍五入
4、可选值Optional
var i : Double?
定义一个Double类型的i,可以赋值nil。如果不加问号,就不可以赋值nil。这个特性跟C#中有异曲同工之处。该类型的是不允许直接参与计算的,需要配合符号进行运算,!强制解包计算(如果强制解包的数据是nil,程序会Crash掉),??判断如果为空的话,给出其他值。下边就上代码详细说明
var i : int? var j : Int j = i -----编译不会通过,系统会提示让你解包 j = i! -----将i强制解包,程序Crash j = i ?? 2 -----如果i是nil,将2赋值给j
5、流程控制语句if else switch case ? :,不多赘述,直接看代码
let i = 100 if i < 60 { print("不及格") }else{ print("及格了~") } switch i { case 0...60 :print("不及格") default:print("及格了") }
switch i {
case let j where j = 60 : print("及格")
case _ where i = 60 :print("及格")
case 60 : print("及格")
default: return
}
if i<60?print("不及格") : print("及格了")
有语言功底的,看如上代码,应该很容易理解。就不做太多的文字说明了。需要强调的一点是switch中 case中,0...60,代表从0到60的所有值。三个.哦。重点强调一下第二种switch的用法。在case中,可以生成新的变量来代替 switch里的变量,并加where来做逻辑判断,如果只要做条件判断,那么可以直接用_代替赋值部分。并且 case接受的值可以是一样的。在switch中,case无法进行穿透。
6、可选值的条件判断
var i : Int? = 100 if let j = i where i <60 { print(j) } guard let j = i else { return }
看了上边的代码,是不是开始蒙蒙哒了,因为是新的知识点,我就多嘴说两句,首先 if let 和 guard let,只能用于可选值的判断,如果 i 是 Int类型,上述代码会报错。if let j = i ,表示,当i不为空的时候,设置 j = i,此时j 的类型就是Int类型,后边的where作为条件判断(有数据库知识的同学应该会很亲切)。括号里边执行的代码,也是当 j可以成功赋值的时候才会执行。guard和if类似,判断 i不为空的时候,赋值给 j ,不同点是,guard let后边不能直接跟括号,而是要加else {},括号里的逻辑,就是当i为nil的时候的逻辑。注意:guard let 里边的{}需要加上return
7、循环
sum = 0 for i in 0..<10 { --------0....9 两个点,加小于号,相当于三个. 注意数值的变化,三个.代表可以取到 sum += i } print(sum) for _ in 0...9 { ---------如果循环中未用到循环的变量,可以省略用_来代替 print("hello") } while i < 10 { i++ } repeat { i-- } while i > 10
for循环和while循环的演示,在Swift中,repeat 代替了do 和while凑成了一对循环。看到repeat,又让我想到了Pascal中的Repeat until 循环,很是亲切。
今天先写到这里,后边我会继续补充其他的内容,希望可以跟大家一起成长。
标签:
原文地址:http://www.cnblogs.com/wulongt/p/5058582.html