什么是swift ? swift 是一门脚本语言
2014 WWDC 发布的一款脚本语言
好处 OC ARC 最大的困难 内存管理
swift 不用担心内存方面 简洁 功能很强大
弱点 :安全性不高 。h .m
语法简单 与oc语言 可以相互调用
1、定义常量与变量
let 常量 = 3
var 变量 = "xx"
2、同一行有两句代码的时候 中间必须加;分号
let 常量1 = 30 ; let 常量2 = 40
3、常量是固定的 不可以改变 变量是可变的
4、//注释 。 /* /* 里面是多行注释 / /
5、输出
//1、
print("this is guiyang")
//2、()会自动给你计算出 ()对应的值
print("常量1 = \(常量1)")
print(常量1)
swift 变量或者是常量 的命名规则
1、不能有数字符号 (比如说 + , *)
2、不能包含箭头
3、不能有非法无效的非编码字符
4、不能有关键字符(let var)
5、不能包含横线,指标符(my-name)
6、不能以数字开头
7、不能单独只有一个下划线(var _)
8、拼接
var 变量2 = "oo"
var 变量3 = "xx"
var 变量4 = "ii"
var 变量5 = 变量2 + 变量3 + 变量4
print("变量5 = \(变量5)")
9、隐式声明
var my = "oo" //my 他是一个 String 类型变量
var num = 3 // num 系统就会默认为一个Int类型的变量
var num1 = 3 //num1 系统就会默认为一个double类型的变量
10、显式声明
var myVar : String = "qwete"
var num : Double = 23
11、数组
隐式 数组
let a = ["ww","qq"]
print("a是:\(a)")
//显式数组
let aa:[String] = ["cc","xx"]
print("aa 是:\(aa)")
支持多类型的初始化
let b:Array = ["w",1]
print("b是:\(b)")
let bb = ["w",1]
print("bb是:\(bb)")
空数组
var c = [Int]()
读取数组有多少数值
print(bb.count)
检查数组是否为空
if bb.isEmpty
{
print("数组为空")
}else{
print("数组不为空")
}
字典(显式)
var dict = [String:Double]()
dict["age"] = 18
通过下表来获取数组的数据(但是不能通过下表来向数组里面添加数据)
let c1 = [1,2]
let c2 = [3,4]
c = c1 + c2
c+=c1
//不能写成c = c +c1
print("c[1]是:\(c[1])")
可以通过下表来修改数组里面的值( 注意:let定义的数组不能改变长度,却可以改变里面的值 )
var d = [1,2,3]
d[1]=5
print("d[1]是:\(d[1])")
往数字末尾添加一个元素
d.append(5)
在一个特定的索引位置插入一个值,可以使用insert(atIndex:)方法
d.insert(10, atIndex: 2)
print("d[2]是:\(d[2])")
你可以调用removeAtIndex方法移除特定的元素。这个方法移除特定索引位置的元素,并返回这个被移除的元素(尽管你并不关心这个返回值)。
let f = d.removeAtIndex(2)
print("f是:\(f)")
可以使用removeLast移除数组最后一个元素
let f1 = d.removeLast()
print("f1是:\(f1)")
遍历数组
//可以使用for-in循环来遍历数组中的值
//for q in d{}
var r = [1,2,3,4,5]
for c in r{
print("c shi \(c)")
}
字典
//定义一个变量
var dic = ["name":"shabi","age":18,"sex":"男"]
print(dic)
//取到所有的key
var allKey = Array(dic.keys)
print(allKey)
var allvalues = Array(dic.values)
print(allvalues)
dic["age"] = 20
print(dic)
swift 的 控制流 语句 if swift for while(xcode 7.0 之后 repeat。。。。 while)
练习:
//有一个队伍的五个人成绩存放在数组中 80分以上加3分 70分以上的加2分 其余加1分 求改组的总分
var g = 0
var chengji = [90,85,75,60,100]
for jia in chengji
{
if jia >= 80{
g=g+3
// g += 3
}
if jia >= 70 && jia < 80{
g=g+2
// g += 2
}else{
g=g+1
// g += 1
}
print("总分是\(g)")
}
练习2;//OC swich (表达式) {case 1:…..break}
swift 中 swich 变得非常强大
var 蔬菜 = "茄子"
var 特征:String = ""
switch 蔬菜 {
case"茄子":
特征 = "可以炒菜 火锅"
case"南瓜","生菜","青菜":
特征 = "吃吃吃"
case let 后缀 where 后缀.hasPrefix("辣椒"):
特征 = "都是辣椒"
default:
特征 = "暂无这样的菜"
}
print(特征)
//有三个队 [一队:[10,20,5,6,5],.....]通过 双重遍历 三队中的最高分以及最高分所在的组
var max = 0
var team = ""
var all = ["one":[10,20,5,8,10],"two":[30,60,10,5,8]]
for (key, values) in all {
for v in values{
if max < v{
max = v
team = key
}
}
}
print("\(max),\(team)")
练习3:
//循环 通过for得到 10的阶乘 while do ....while repeat ... while
var shu = [1,2,3,4,5,6,7,8,9,10]
var he = 1
for num in shu{
he=he*num
}
print(he)