首页 > 代码库 > iOS最新语言Swift简析

iOS最新语言Swift简析

  2014WWDC刚刚落幕,个人感觉最大的惊喜就是swift(雨燕),所以在第一时间下载了官方的开发文档和最新的SDK、Xcode尝试进行了代码的编写,这里就作为抛砖引玉,希望能激发大家的学习热情,毕竟作为程序猿最激动的不就是可以一直让自己快乐的学习新的知识么。

  Swift的开始:

    helloworld非常简单

    println("Hello, world")
   直接使用println无需使用oc传统的@符号,而且后面的分号也不需要了,瞬间感觉swift比较有爱
 定义变量:
  使用let关键字来定义常量,使用var关键字定义变量,常量的类型在编译的时候不必指定,但是必须为其进行一次准确的赋值操作,这样你完全可以把这个常量用到很多的地方。
?
1
2
3
4
5
var myVariable = 42 //如果在swift中的某个变量已经声明为int那么下面再次使用的时候就是这个int类型
   println(myVariable) //输出42,这里不用使用NSLog(@"%@",myVariable);非常简答了吧
   myVariable = 50   //再次为这个变量进行赋值操作
   let myConstant = 42 //定义一个常量
   println("myVariable=\(myVariable)") //这里是在进行格式化输出操作,但是需要的仅仅是在输出变量前面加上一个反斜杠,并且将变量放到括号中(必须放到括号中)

  一个常量或者变量的的类型你无须在每次进行显示的指明,其类型其实就是你给这个变量进行第一次赋值的类型(并不在complie进行type的确定,而是在运行时)。而定义变量的时候使用var myVariable = 42其实在编译的时候这个 myVariable变量的类型是‘()‘可以理解为void类型的,运行时则会根据所有的值进行相应的运行时检查确定变量的类型,例如上面的例子。

  假如初始值并未提供足够的类型判断的信息(未进行初始化赋值),可以将类型的声明写在变量的后面并且用:分开并且进行赋值  

?
1
let explicitDouble: Double = 70 //对explicitDouble变量进行赋值并且指定这个变量类型是Double

  输出操作:

  1.类型转换

?
1
2
3
1 let label = "The width is " //定义一个变量接受一个字符串
2 let width = 94 //定义一个变量接受int类型数据
3 let widthLabel = label + String(width)//将int进行强制转换和字符串一起输出,如果想要将一个类型的数据转换为另一种类型,需要显示的调用转换方法

  2.格式化输出

  

?
1
2
3
4
1 let apples = 3 //int变量
2 let oranges = 5
3 let appleSummary = "I have \(apples) apples." //进行格式化输出,输出的格式是将需要输出变量变成格式\(变量)
4 let fruitSummary = "I have \(apples + oranges) pieces of fruit."

  多个变量进行连续输出的话直接进行拼接就可以了I have \(apples)\(oranges) apples.

  当然为了增加输出的log的可读性一般添加上分隔符,I have \(apples)+\(oranges) apples.//在里面可以直接添加字符串,只要不是在变量体中就可以了

  Array & Dictionary

  数组的定义也有两种定义方式  

//第一种方式
var shoppingList = ["catfish","water","tulip","blue paint",""] //直接定义并且不显示的指明类型是集合,由编译器自行进行类型检测,容易理解
//第二种方式
var shoppingList : Array = ["catfish","water","tulip","blue paint",""]//和变量常量的定义类似,有两种方式Array类型为: struct Array<T> : MutableCollection, Sliceable

  Swift很重要的一点是没有了Mutable和非Mutable之分,这里可以直接修改集合中的数据

  

shoppingList[1] = "bottle of water"//直接修改数组中的数据

  

println(shoppingList[4])//fatal error: Array index out of range越界,不得不提的是错误的提示更加的准确了,可以直接定位到错误的位置,还有一点虽然这个""也算在集合中,并且参与了长度的计算,但是直接打印并不能打印出结果

  字典

  同样的提供了两种定义方式

  

//第一种定义方式
var occ = [ "Mylcolm":"Captain", "Kaylee":"Mechanic",//这个逗号写不写都可以 ]
//第二种定义方式Dictionary 类型:struct Dictionary<KeyType : Hashable, ValueType> 
var textOcc : Dictionary = [
            "Mylcolm":"Captain",
            "Kaylee":"Mechanic",//这个逗号写不写都可以
        ]

  如果要添加字典元素直接进行操作

textOcc["Jayne"] = "public"//相当于添加了一个字典对象Jayne:key :value 非常直观有没有?

  创建空的array和dictionary

1 let emptyArray = String[]()
2 let emptyDictionary = Dictionary<String, Float>()

  直接有了java的东西,虽然刚刚开始学习Swift,但是感觉Swift汲取了很多的老语言的优点,OC的一些特点,Java的一些泛型的思想,估计这样的话程序会更加的安全了。