您的位置:首页 > 其它

斯威夫特 -从0开始 FirstDay

2015-12-09 22:02 323 查看
* [零碎导入]*

1, 特点:

swift 同时具备编译性语言的高性能和脚本语言的灵活性;

高性能: OC, C#所有代码必须每一行没有错误才会执行;

灵活性:脚本语言 不一定所有代码都正确才会执行,对多少行 执行多少行;

可以与C, OC混合使用;

2,使用条件:

Xcode >= 6.0

Mac系统 >= 10.9.3

3, 人物

Swift首席架构师 Chris Lattner

LLVM 编译器项目发起者之一

Clang编译器的开发者

Xcode开发部门主管

4, 其他:

一般OC文件一个类分为.h和.m文件, OC里面有c++代码文件的时候 后缀是.mm; 而swift文件每个类的后缀名都是.swift,只有一个,没有.h之类对应的;

1 不需要编写main函数 (程序从上往下顺序执行,所以最前面的代码会被自动当做程序的入口)

2 不需要在每一条语句的后面加上分号 (喜欢的话也可以加上) 但有一种情况必须加分号: 同一行代码上有多条语句时;

3注释 :swift可以进行多行嵌套注释;

4 声明

let 声明常量 ; var 声明变量;

5, swift中的代码格式要求要严格,比如空格, 不能随便打, 一句代码中,要么不要打空格,要么前后空格要对应; 如果只打一个空格的话 系统就会识别为空格是断句的,会报错;

[代码示例]

1. 简单变量声明定义 ;变量赋值; 变量相加

// let 定义不可变的 定量
let name = "李蝇"

//var 定义变量
var age = 25
age = 30

//在swift中类型推断
//在定义变量的时候给定了类型 就是告诉我们 我们下面在给其赋值的时候 必须要是一样的类型
let number = 19
let number1 = 21

//如果给定类型了 在后面赋值的时候 必须要给你给定的类型相匹配
var name3 :String = "你好"

//在swift中使用加号 必须是相同类型的变量
print(number + number1)

let name1 = "李颖蝇"
let name2 = "绿莹莹"
print(name1 + name2)


数组,字典的操作

let array = [12,34,23,546,]  //不可变的数组 不能进行增删改查

var array2 = [24,35,67,33]  //定义一个可变数组
array2.append(100)  //给可变数组添加元素
array2.insert(1000, atIndex: 3)  //把数组插入到指定位置
print(array2)

array2.removeAtIndex(0) //删除数组中指定元素

array2[2] = 999 //修改数组中的元素

var array3 :Array = [String]()  //初始化一个空数组 定义数组类型只存储字符串类型元素
array3.insert("liyingying", atIndex: 0)

var array4 :Array = [AnyObject]()  //定义可以插入任意类型元素的数组
array4.insert("qige", atIndex: 0)
array4.insert(666, atIndex: 1)

//定义字典类型
var dict1 = [
"李颖":"猫",
"李莹":"鸟"
]

dict1.updateValue("狗", forKey: "李英")  //在字典中增加元素 (字典是无序的)
print(dict1)

dict1.removeValueForKey("李莹")  //删除字典中键值对

dict1.updateValue("汪汪", forKey: "李英")  //修改字典中的键值对

//定义空的字典
var dict3 :DIctionary = [String : String] //或者下面的定义方法;这种的定义Value只能是字符串
var dict2 :Dictionary = [String : AnyObject]() //字典的key只能是字符串类型
dict2.updateValue(666, forKey: "狗")
print(dict2) //

//swift中特殊字符以及汉字也可以定义变量
var 狗 = "李颖"
print(狗)  //打印结果: 李颖


元组的定义 使用

//定义一个元组 任何类型都能放到元组里面 (跟结构体不一样
//在swift中 swift可以存放任何类型,类似OC中的结构体
//元组用于函数具有多个返回值时
var group = ("琦哥",18,183,75.0)
print(group.0)

var group1 = (name:"seth",age:20,height:185,weight:70)
print(group1.height)

//元组可以修改
group1.name = "qige"


分支语句

//if判断语句
let cool = false
if cool == true {
print("好爽")
}else {
print("不爽")
}

//switch语句

let number3 = <
c114
span class="hljs-number">10
switch number3 { //在swift中,switch语句不需要加break,就可以阻断执行
case 0 :
print("小屁孩")

//fallthrough  //如果你想让这些语句不阻断继续执行下去,在后面加fallthrough
case 10 :
print("大屁孩")
// fallthrough
default :
print("人精") //OC中default可有可无, swift中必须有
}

//利用switch写一个大于等于0 小于10,和大于等于10 小于等于100的不同情况
switch number3 {
**// ..< 是一个半闭半开区间; ...是全闭区间**
case 0 ..< 10:  //swift中的空格格式有严格要求; 前面有的话后面对应要有,不然后被认为是断句
print("小孩")
case 10 ... 100:
print("壮士")
default:
print("died")

}

//for循环
for var i = 0; i < 10; i++ {
print(i) //从0到9循环打印
}

//for in形式的for循环
let animal = ["老鼠","牛","老虎","兔子","馬"]
for a in animal { //遍历数组
print(a)
}

//forin循环打印字典
let animal1 = [
"狗":"666",
"猪":"777"
]

for (key,value) in animal1 {
print("\(key) \(value)") //打印出key的打印方式
}

for (_,value) in animal1 { //只打印key或value中的一个的方式
print("\(value)")
}

for (key,_) in animal1 {//只打印key或value中的一个的方式
print("\(key)")
}

//while循环语句
var number5 = 100
while number5 > 0 {
number5--
print(number5)  /打印99 -- 0
}


斯威夫特中函数的使用

//首先是一个最简单的 无参无返回值的 (简便写法: 无返回值的可以不写后面的空返回值
func test() ->Void { //简便形式的写法:func test()
print("欧巴思密达")
}
test() //打印出 欧巴思密达

//无参有返回值的
func test1() ->String {
return "666"
}
var re = test1()
print(re) //打印出666

//有参无返回值的
func test2(a:Int) ->Void {
print(a)
}
test2(20)  //传入参数20 打印出20

//有参有返回值的
func test3(a:Int) ->Int {
return a
}
let b = 10
let c = test3(b)
print(c)  //传入参数10 打印出10

//返回值是元组的函数
func test4(a:Int,b:Int) ->(Int,Int) {
return(a+b,a-b)
}
let x = 10
let y = 20
print(test4(x, b: y))

//练习 函数
//交换两个值的函数
//***在swift中 参数修饰默认都是let修饰的,如果想改变内部参数值,必须要加上inout修饰 (或者定义变量类型var来定义)***
func change(inout a:Int,inout b:Int) ->Void {

let temp = a
a = b
b = temp
}
var i = 10
var j = 20
change(&i, b: &j)
print("\(i) \(j)") //打印多个值的格式


枚举和结构体的用法

//枚举 enum
enum season {
case Spring
case Summer
case Autumn
case Winter

}

//带值的枚举
enum seasons :Int {
case Spring = 1
case Summer
case Autumn
case Winter
}

//拿枚举值的两个方法:
print(seasons.Summer.rawValue) // .rawValue 这个拿到的是自己定义的给定的枚举的值;一般拿值是用这个方法;  打印结果是2
print(seasons.Summer.hashValue) // .hashValue 这个拿到的是默认的枚举的值; 打印结果是1

//结构体  可以放属性和方法
struct fiveCircle {
var name:String
var age:Int
func method1() {  //结构体中定义的无参无返回值的方法
print("啊~~~~五环")
}

static var name1:String?  //

//类方法
static func method2() {  //static用来修饰类方法的修饰词
print("你比四环多一环")
}

}
//初始化一个结构体
var five = fiveCircle.init(name: "琦哥", age: 20)
five.method1()  //实例方法 用实例来调用
fiveCircle.method2() // 结构体的类方法

//声明一个类跟结构体很像, 类里可以声明属性和方法

//类
class Person {

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: