// main swift 没有main 函数
// 什么是swift?
//2014 WWDC 发布的一款脚本语言。
// 好处: OC ARC 最大的困难 内存管理
// swift 不用担心内存方面。 简洁 ,功能
//很强大 ,但是也有弱点 , 安全度不高。 .h .m
// 语法简单 与OC语言可以相互调用。
// 自学swift
// 两个不需要。 第一个不需要;
//同一行有两句代码的时候,中间必须加;
//let 修饰的是常量,常量不允许改变
let 常量1 = 30
//常量1 = 40
let 常量2 = 40
// 注释。 /* /*里面是多行注释 */ */
print(" this is guiyang")
//\() 会自动给你计算出()里面相应的值
print( " 常量1 = \(常量1)")
print(常量1)
// var 定义的变量 ,改变变量1的值,并且打印出来
var 变量1 = 30
/*
swift 变量或者是常量的命名规则
1. 不能有数学符号 (比如说 + *)
2 。不能包含箭头
3.不能有非法无效的非编码字符。
4.不能有关键字 (let ,var)
5,不能包含横线,指标符(my ——name)
6,不能以数字开头
7.不能单独只有一个下滑线。 (var _)
*/
//自己定义三个变量。定义的第四个变量=前三个变量相加,并打印第四个变量
//var myVar1 = "hello"
//var myVar2 = " "
//var myVar3 = "world"
//var total = myVar1 + myVar2 + myVar3
//print(total)
// 隐式声明, 显式声明
//var myVar1 = "hello" //myVar1 他是一个String 类型的变量
// var num = 23 num 系统就会默认为一个Int类型的变量
// var num1 = 23.0 num1 系统就会默认为一个Double类型的变量
//显式变量
//var myVar1 : String = "hello"
//var num : Double = 23.0
//自学swift中数组和字典。
//数组
//定义一个数组
var shopList = ["橘子","香蕉","茄子"]
//求数组里面元素的个数
var count = shopList.count
// 检查数组是否为空的一个属性 ,isEmpty属性
if shopList.isEmpty
{
print("数组为空")
}
else
{
print("数组不为空")
}
//往数组末尾添加一个元素 。append 方法
shopList.append("辣椒")
//在数组指定索引处插入元素
shopList.insert("猕猴桃", atIndex: 1)
print(shopList)
//通过索引删除元素
shopList.removeAtIndex(2)
print(shopList)
//数组的遍历,(迭代访问 for...in)
//for var 遍历 in shopList
//{
// print(遍历)
//}
//for index in 1...5{ 三个... 仅用于
// print(index)
//}
//生成若干个重复元素组成的数组。
var threeDoubles = [Double](count :3,repeatedValue :2.5)
print(threeDoubles)
//字典
// 定义一个字典, value设置成数组的时候取所有的key时,不能用dic.keys .而是要用 dic.allkeys.并且不能改变value。 为什么?
var dic = ["name":shopList,"age":18,"sex":"男"]
print(dic)
//取到所有的key
var allkeys = Array(dic.allKeys)
print(allkeys)
//取到所有的value
var allValues = Array (dic.allKeys)
print(allValues)
//定义一个空的数组和字典
//dic["age"] = 20
//dic["age"] = 21
print(dic)
//显式定义 一个空的数组和字典
var emptyArr = [Int]()
emptyArr.insert(12, atIndex: 0)
var emptyDic = [String:Double]()
emptyDic["age"] = 18
print(emptyDic)
//swift 的控制流语句 if swich for while do。。whlie (xcode7.0 之后repeat 。。。while)
//有一个队伍的五个人的成绩存放在数组中。 80分以上加3分 70分以上加2分 其余加一分 求改组的总分
var teamScore = 0
var individualScores=[78,56,67,87,75]
for score in individualScores
{
if score > 80{
teamScore += 3
}
if 80 > score && score > 70{
teamScore += 2
}
else
{
teamScore += 1
}
}
print(teamScore)
//OC swich ( 表达体) {case 1: 。。。break
//swift 中swich 变得非常强大
var 蔬菜 = "红辣椒"
var 特征:String = ""
switch 蔬菜 {
case "茄子":
特征 = "可以炒菜,火锅,烧烤"
case "香菜","生菜","油麦菜":
特征 = "都是菜,可以生吃"
case let 后缀 where 后缀.hasSuffix("辣椒"):
特征 = "不管是红辣椒还是青辣椒都是辣椒"
default :
特征 = "暂无此类蔬菜信息"
}
print(特征)
//有三个队 ,[一队 :[10,23,5,6,5],....] 通过双重遍历,三队中的最高分以及最高分所在的组。
var 得分 = [ "一队": [13,44,64,24,57] ,"二队": [13,34,64,84,67] ,"三队": [13,24,64,54,67] ]
var max = 0
var teamName = ""
var index = 0
//字典的遍历
for(key ,values) in 得分 {
for value in values
{
if max < value{
max = value
teamName = key
var vs:NSArray = values
index = vs.indexOfObject(value)
}
}
}
print("最佳的MPV得分 :\(max),是 \(teamName) 的第\(index + 1)个队员")
//循环 通过for得到10的阶乘 while do ... while repeat ...while
var n = 10
var阶乘 = 1
//while n>0
//{
// 阶乘 = 阶乘 * n
// n--
//}
//print(阶乘)
//repeat
//{
// 阶乘 = 阶乘 * n
// n--
//}
//while n>0
//print(阶乘)
for var i=1 ; i <= 10 ;i++
{
阶乘 = 阶乘 * i
}