您的位置:首页 > 移动开发 > Swift

Swift基础知识_01

2015-10-15 22:22 429 查看


import Foundation

// 1.介绍swift的特点

// a.语句结束后可以不用加分号

// b.访问对象的属性和方法都用点语法

// 2.变量和常量

// a.常量用 "let"关键字修饰,不可修改

let num1 = 12

// b.变量用 "var"关键字修饰,可以修改

var num2 = 3

num2 = 6

print("num1 = \(num1)")

print("num2 = \(num2)")

// 3.显示标注数据类型

//注意:如果要显示某个数的类型,要在变量名后加:(类型名),类型名的首字母都是大写

//swift中的基本数据类型:Int/Double/Float/Character/String/Bool

//字符串和单个字符都用""

//Bool的值是true和false

// 2.变量常量的定义

//定义变量

var age = 10

age = 11

//定义常量

let gender = "男"

// 3.显示标注类型

var yanHuaAge: Int = 13

var yanHuaWeight: Float = 50.00

// swift中的基本数据类型

//Int/Double/Float/String/Character/Bool

let yanHuaGender: Bool = true

//注意:swift的bool类型的数据时true和false

//注意:swift中的字符和字符串都用双引号,但定义了一个字符型变量只能赋值为一个字符

//字符

let yanHuaGender1: Character = "g"

//字符串

let yanHuaGender2: String = "gg"

// 4.数组

//常用数组样式

var array1 = [1,2,3,4]

var array2 = ["ddd","dfdsawae"]

var array3 = [1,"ddd",3]

//其他几种形式

var array4: Array<Int> = [1,234,4,6]

var array5: Array = ["df","dfeww"]

var array6: [String] = ["fdwew3","1232"]

//数组为空

var array7 = [Bool]()

var array8 = Array<Int>()

//增

array1.append(534)

array1.insert(1223, atIndex: 0)

array1 += [23,3222]

print(array1)

//删

//array1.removeAll()

array1.removeAtIndex(0)

//改

array1[0]=233222

//查

print(array1[0])

// 5.字典:也用中括号

var dict1 = [

"key1":"value1",

"key2":"valye2",

"key3":"value3"

]

var dict2 = [

"key1":12,

1:"value2",

]

var dict3:Dictionary<Int,String> = [

1:"value1",

2:"value2"

]

var dict4:Dictionary = [

2:"fd",

3:2

]

var dict5 = Dictionary<Int,String>()

var dict6 = [Int:String]()

//print(dict5)

//增加或修改

dict5[1]="dfde"

print(dict5)

dict5.updateValue("fdew", forKey: 2)

print(dict5)

//删除

//dict5.removeAll()

dict5.removeValueForKey(1)

//查找

print(dict5[1])

//获得所有的键和值,要进行强转

let allKeys = Array(dict5.keys)

print(allKeys)

let allValues = Array(dict5.values)

print(allValues)

// 6.元组:可以给每个变量取名,便于访问

//方法一:

var result = (404,"Not Found")

//方法二:

var yanHua = (name:"yanHua",age:21,gender:"女")

print(yanHua.name)

//或者

print(yanHua.0)

//方法三

var (name1,age1,gender1) = yanHua

//打印 :print中嵌套变量使用 用"\(变量名)"

print("name:\(name1),age:\(age1),gender:\(gender1)")

// 7.分支语句

var score = 56

//if语句

//注意:判断语句可以加括号也可以不加,不加括号时,判断语句的形式要一致,否则容易出错

//socre> 80:就会报错,要写成 score > 80 或 score>80

if score > 80{

print("优秀")

}

else if (score > 60) {

print("及格")

}

else{

print("不及格")

}

//switch语句

//a.必须有分支满足情况

//b.分支中必须要有操作

//c.不需要break,如果要贯穿,手动添加fallthrough

//d.switch可以进行范围判断

switch score

{

case 60:

print("")

case 70:

print("")

default:

print("")

}

switch score

{

case 0...60:

print("")

default:

print("")

}

switch score

{

case 0..<60:

print("")

default:

print("")

}

switch score

{

case 0...60:

score += 20

case var s where s<=60 && s>=50://判断,此时score的值赋给了s,score的值不会改变了,操作的是s

s += 20

default:

print("")

}

let point = (2,2)

switch point

{

case (_,_)://"_"代表忽略符,匹配任何数

print("")

default:

print("")

}

// 8.循环语句

//不太常用

repeat

{

print("")

}while false

while false

{

print("")

}

for var i = 0 ; i <= 10; i++ {

print(i)

}

//最常用

//...:包括

//..<:不包括

for i in 0...10

{

print(i)

}

//遍历数组

let names = ["shuang","ss","ffeee"]

for name in names

{

print(name)

}

//遍历字典

let name2 = [

"ju":"de",

"shuang":"shuang"

]

//如果只要key或value,则循环的时候写成(key,_)或(_,value)

for (key,value) in dictionary{

print("key = \(key),value = \(value)")

}

// 9.函数

//关键字:func

//无参无返回值

//写法一:

func test1(){

}

//写法二:

func test2() -> Void

{

}

//无参数有返回值

func test3() -> String

{

return "string"

}

//有参无返回值

func test4( a: Int , b: Int) -> Void

{

print(a,b)

}

//有参有返回值

func test5(c: String , d: String) -> String

{

//字符串之间可以直接相加

return c + d

}

//有参有多个返回值

func test6(e: Int , f: String) -> (Int,String)

{

return (e,f)

}

// 10.外部参数名、内部参数名

// a.函数默认内部参数名和外部参数名一致

// b.如果要在外部显示一个参数的名,可以手动添加一个外部参数名

// c.第一个参数默认没有外部参数名

// d.参数的内部参数名只能在函数内部使用,外部参数名是在函数调用的时候显示和使用

func test7(shuangBu buShuang: Int){

//buShuang:内部参数名,在函数内部使用

print(buShuang)

}

//shuangBu:外部参数名,在函数外部使用

test7(shuangBu: 7)

// 11.inout参数(实质还是用了C语言的指针来修改变量的值)

//a.参数默认的是let类型,不能修改参数的值

//b.如果要在函数内部修改参数的值,可以把参数修改成var类型

//c.如果要在函数内部修改外部参数的值,可以用inout修改

func test8(inout h: Int)

{

h = 9

}

var j = 0

print(j)

test8(&j)

//已经修改了j的值

print(j)

// 12.函数的嵌套声明

//switf中函数可以嵌套定义,但是要分使用范围

func test10() {//全局函数

func test11() {//局部函数

func test12() {//局部函数

}

}

}

// 13.枚举

// 关键字:enum

//此时枚举类型中的值可以是String、Double、Int很多类型,但是要想给枚举值赋值,要在枚举变量后面加类型,如:Int

enum Season : Int{

case Spring = 4 //0

case Summer

case Autumn

case Winter

}

//取值

//既可以用 枚举名.枚举值

//也可以用.枚举值获取值

var s1 = Season.Spring

s1 = .Summer

//打印值

print(s1.rawValue)

//'!'和'?'

//‘!’:在变量使用的前一步必须赋值,否则使用时会崩溃

//'?':变量使用的时候既可以为空也可以赋值,但要用值时要用‘!’解包

//使用原始值创建枚举变量时需要注意,得到的值是可选择的(包括包),要用'!'解包使用

var s2 = Season(rawValue: 4)

print(s2!)

//与switch配合

switch s2!

{

case .Spring:

print("春天")

case .Summer:

print("夏天")

case .Autumn:

print("秋天")

case .Winter:

print("冬天")

}

// 14.结构体

//关键字:struct

//注意:类方法只能访问类属性,实例方法只能调用实例属性

struct Person {

//声明属性

var name: String

var age: Int

//声明结构体属性(直接用结构体调用)

//注意:静态变量必须要用'?',值可空的,否则会奔溃

static var des: String?

//声明方法

func sayHi(){

print("name:\(name),age:\(age)")

}

//声明结构体方法(直接用结构体调用)

static func sayHello(){

//此时的self指的是结构体本身(就跟类一样,不能指对象)

print("des:\(self.des!)")

}

}

//创建结构体对象

//注意:构造函数是默认的,如果在结构体中没有自定义构造函数,则系统会默认调用一个构造函数

var p1 = Person(name: "张三", age: 13)

//访问属性

print(p1.age)

//访问结构体属性

Person.des = "wooeooeow"

print(Person.des!)

//访问结构体方法

Person.sayHello()

struct Student {

//声明属性

var name: String?

var age: Int?

var hobby: String?

var gender: String?

//自定义构造函数

//注意:当自定义构造函数时,会给每个属性赋值,如果自定义方法没有给属性赋值,则应该将属性都声明成可空的

init(){

}

//有姓名和性别

init(name: String, gender: String){

self.name = name

self.gender = gender

}

//所有属性都初始化

init(name: String, gender: String, age: Int, hobby: String){

self.name = name

self.gender = gender

self.age = age

self.hobby = hobby

}

}

//创建结构体对象

var s = Student()

s.age = 10

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