标签:
//引入的时候没有双引号,也没有尖括号,直接写框架名
import Foundation
//输出函数是print
//字符串取消前面的@标记
//没有分号,分号是可选写入的
print("Hello, World!")
/*Swift和OC的不同:
1.类型判断,不需要指定变量的类型,Swift相比OC最强大的地方在于编译器,Swift编译器是全类型编译器,在编译的时候就知道了所有对象的类型,这是OC的动态编译所做不到的.这样做有一个好处就是类型安全.
2.Swift当中不能向nil发送消息.
3.泛型 允许像Java那样将数据类型参数化.
4.字符串做了一些增强
5.switch语法做了精简,提供了范围限制
*/
//1.变量和常量的声明
let myGender = "男"//声明常量
var carName = "BMW"//声明变量
carName = "Audio"
//Swift中允许使用任何unicode字符作为变量和常量的名字,包括那些不在ASCII编码的字符(貌似然并卵)
let 李帅 = "呆萌欧巴"
let ?? = "钱"
let ?? = "真棒"
print(??)
var a = 10
var b = "A"
var c = 100.1
var d = 200.2
var e = c + d
var char = "A"//这样创建的是字符变量
//2.类型推断
//swift定义变量和常量的时候,不需要标志出变量和常量的类型,系统会自动进行匹配补全,但是也可以进行手动指定
let name = "周杰伦"//这里就会自动推断为NSString类型,是由后面的字符串推断出来的.
let name1 : String = "八路"//这个常量就不会进行类型推断,因为已经显示的指定了常量的类型.
//swift中所有的类型(系统原声的)都是首字母大写,剩下的小写
var age = 20
var age1 : Int = 20
var weight : Float = 130
var money : Double = 20000000000
//不论是变量还是常量,要么赋初值,要么指定类型(可选类型,加问号?),要么指定类型并且赋初值.否则报错.
//3.可选类型
//在swift当中对象没有赋初值就没有起始值,没有值的量是不能使用的,会报错和警告,这个时候需要可选类型,可选类型简单来说可以理解为,允许为空.
//将一个变量声明为可选类型?很简单,在最后面加一个问号就行了
var sex : String?
print(sex)
sex = "女"
print(sex)
print(sex!)//显示拆包,用!(叹号)可以将可选类型中的数据拆解出来
//下面的代码因为不能为空又没有初始化,所以会报错
//var sex : String
//print(sex)
//4.字符串
//(1)创建空的字符串
var str_empty : String = ""
var str_empty1 : String = String()
//(2)判断字符串是否为空
if str_empty.isEmpty{
print("字符串是空的")
}
//(3)字符串拼接
var str1 = "lanou"
var str2 = "3g"
var str3 = "!!!"
var str4 = str1 + str2 + str3
print(str4)
//(4)字符串中间插入数值
//swift中占位符更改了,使用\()来进行变量和常量的取值
print("蓝鸥官网:\(str4)\n")
//(5)获取字符串的长度
print(str4.characters.count)
//(6)字符串等值判断
if str1 != str2{
print("两个字符串不相等")
}
//5.隐式类型转换
//swift里面没有隐式类型转换,只有显示类型转换
//swift是强语言 oc是弱语言
//强制类型转换
let aa : Int = 3
let bb : Float = 3.2
var cc = Float(aa) + bb;
//6.数组的使用
//swift中的特点:(1).存储的所有数据必须是同一类型 (2).不必非得是对象类型,基本数据类型也可以存储
//数组的创建方式
var nameArray = ["周杰伦","刘德华","张学友"];//首先推断为数组,数组里面元素的类型为字符串
var nameArray1 : Array<String> = ["李宇春","林心如","王菲"];//这种是直接显式指定数组和某元素类型
//创建一个空的数组
var array = Array<String>()//推荐用这种
var array1 = [Int]()//创建一个整型的数组
//访问数组
print("数组第一个元素是\(nameArray[0])")
//添加元素
nameArray.append("宋恩彩")
nameArray.insert("宋仲基", atIndex: 0)
print(nameArray)
//删除
nameArray.removeAtIndex(0)
print(nameArray)
//修改
nameArray[0] = "宋慧乔"
print(nameArray)
//7.字典
//定义字典
var score:Dictionary<String,Int> = ["飞轮海":99,"SHE":82,"南拳妈妈":31]
//定义空字典
var dic1:Dictionary<String,Int> = [:]
var dic2 = Dictionary<String,Int>()//推荐
//添加键值对
score["动力火车"] = 98
//修改某个键值对
score["SHE"] = 89
print(score)
//删除
score.removeValueForKey("SHE")
print(score)
//8.元组
//元组是将任意类型的任意个数的元素组成一个新的数据类型
var status = ("研发32",["18","17","100"],32)
//print(status)
var status1 : (className : String,age:Array,count:Int) = ("研发32",["18","17","100"],32)
//print(status1)
//元组数据的访问
//方式1
print(status.0)
//方式2
print(status1.className)//推荐
//元组的建议:元组中的元素过多,用标记名称,元组的元素较少,种类能够分开,直接使用下标
//9.分支语句
//在swift中,bool类型只有true和false,没有yes和no
let flag = true
if flag == true{
print("好开心")
}else{
print("不开心了")
}
//switch
//(1).不需要使用break,不会有贯穿现象
let ageOfCat = 10
//switch ageOfCat{
//case 0 :
// print("娘胎里的宝宝")
//case 1 :
// print("小猫咪,也是宝宝")
//default :
// print("大猫,依旧是宝宝")
//}
//(2).支持区间选项
//switch ageOfCat{
//case 0..<10 ://闭区间
// print("宝贝")
//case 10...100 ://半闭区间
// print("大宝贝")
//default :
// print("千年老妖")
//}
//(3).支持where子句
switch ageOfCat{
case var value where ageOfCat < 10 && ageOfCat > 0 :
print("小宝宝")
case var value1 where ageOfCat >= 10 && ageOfCat < 100 :
print("大宝宝")
default :
print("heihei")
}
//10.循环
//for循环
for var i = 0; i<10; i++ {
print("我是第\(i)遍")
}
let arr = ["??","??","??","??","??","??"]
//遍历数组
for a in arr{
print(a)
}
//遍历字典
let dict = ["如花":18,"西施":16,"杜十娘":13]
for (key , value) in dict{
print("\(key) -> \(value)")
}
//while
var number = 5
while number > 0{
number--
print(number)
}
//repeat
repeat{
print("dasas")
number--
}while number > -6
//11.函数
//无参无返回值的函数
func function1() ->Void{
print("我什么也不干")
}
//无参数有返回值的函数
func function2() ->Int{
return 10
}
//有参数无返回值的函数,参数列表是先写参数名,再写参数类型
func function3(a:Int,b:Int) ->Void{
}
//有参数有返回值的函数
func function4(a:Int,b:Double) ->Int{
return a + Int(b)
}
//函数调用的时候,需要显示的表明参数名字.,但是一般第一个参数不写,剩下的参数都要表明参数的名字
print(function1())
print(function2())
print(function4(1, b: 2.2))
//inout参数
//参数默认是let类型的,但是swift提供了另外一种方式,可以将参数和传入的值进行关联,就是inout
func change(inout value : Int){
value = 10
}
var number1 = 20
change(&number1)
print(number1)
//12.枚举
enum Season : Int{
case spring = 10
case summer
case autumn
case winter
}
print(Season.summer.rawValue)
标签:
原文地址:http://www.cnblogs.com/fzkwan5438020/p/5367938.html