Swift基本语法

//Swift OC 的区别

/*

    *可以不写分号

    *Swift严格要求代码规范,=号前后要有空格

    *打印使用print

    *使用var修饰变量 使用let修饰常量

    *在不指定变量(常量)类型时,根据所赋的值自动匹配

    *playground中运行更直观

 

*/

/*命名规范

    *以数字、字母、下划线组成,不以数字开头

    *不能使用系统关键字

    *可以使用`关键字`命名

    *全面支持编码格式

*/

/***************** 基础数据类型 ************************/

//1.整型

let number = 10

let anumber : Int = 20

Int.max

Int.min

Int32.max

 

//2.浮点型

//不指定时,默认是Double类型

let bNum = 3.14

var floatNum : Float = 3.14159265357

var doubleNum : Double = 3.141592653572345687890

 

//3.布尔

var boolValue = true

var aBoolValue = 3 > 7

 

//4.字符 & 字符串

//1)字符

var charValue : Character = "a"

 

//2)字符串

var stringValue = "张三"

var stringValue1 = "包宿"

stringValue + stringValue1

 

//5.可选类型

/*

    *有值返回对应的值,无值返回nil

    *定义常量(变量)必须指定类型

    *问号?与定义的类型之间不可以加空格的

 

*/

var optionvalue : String?

var aOptionValue : String? = "20"

 

//强制解析

/*

    *强制解析:可选变量有值时使用

    *使用方法:变量(常量)+

*/

if aOptionValue != nil {

    aOptionValue = aOptionValue! + "16"

}

 

//6.元组

var httpError = (404, "NotFound", (1, 2, 3, 4))

httpError.0

httpError.1

httpError.2.1

 

var (code,error) = (404, "NotFound")

code

error

 

var 李四 = (name:"李四", age: 17, sex : "不详")

李四.name

李四.age

李四.sex

 

/******************Array Dictionary string*********************/

//1.字符串

//1)定义

var aStrValue = "这是一个字符串"

var bStrValue : NSString = "这也是一个字符串"

//2)定义空的字符串

var cStrValue = ""

var dStrValue = String()

//3)判断两个字符串是否一致

let 班长 = "大哥"

var 学委 = "二哥"

班长 == 学委

//4)拼接

学委 + "❤️" + 班长

学委 += 班长

学委

//打印变量

print(班长)

print(班长,学委)

print("\(班长)"+"\(学委)")

print("\(班长)❤️\(学委)")

//5)判断是否为空

班长.isEmpty

//6)大小写转化

let ? = "Mao"

?.uppercaseString

?.lowercaseString

 

//2.数组

//1)定义

 

//Swift 使用var修饰可变数组,使用lei修饰不可变数组

var arrayValue = [1,2,3,4,"One"]

var arrValue : Array<Int> = [1,2,3,4]

var ocArrValue : NSMutableArray = [1,2,3,4]

var ocEmptyValue : NSMutableArray = NSMutableArray()

 

//2)添加元素

//Swift数组

arrValue += [1,3]

arrValue.append(10)

//oc

ocArrValue.addObject(100)

ocArrValue.insertObject(9, atIndex: 2)

ocArrValue.removeObject(9)

 

//3)删除元素

//ocArrValue.removeAllObjects()

//arrValue

//arrValue.removeAtIndex(2)

//arrValue

//arrValue.removeRange(2...5)

//arrValue.removeRange(1..<3)

//arrValue

 

 

//4)个数

arrValue.count

 

//5)遍历

arrValue

for item in arrValue

{

    print(item)

}

//倒序输出

for item in arrValue.reverse(){

    print(item)

}

//元组遍历

for (index,value) in arrValue.enumerate()

{

    print("\(index):\(value)")

}

 

//3.字典

//1)初始化

var emptyDic = Dictionary<Int, String>()

 

var dicValue : Dictionary<Int, String> = [1:"李三❤️李四",2:"学委❤️班长",3:"张三❤️李四",4:"大锤❤️小锤",5:"?❤️?",6:"小明❤️小红",7:"❤️",8:"屌丝❤️左手❤️右手"]

 

//2)添加修改

//如果字典存在Key,则更改对应的值,没有此Key,则添加此键值对

dicValue[9] = "男孩❤️女孩"

 

//3)个数

dicValue.count

 

//4)移除

dicValue.removeValueForKey(5)

//字典中键值对,都是由hash组成的下标

var index = dicValue.indexForKey(4)//获取字典下标

dicValue.removeAtIndex(index!)

dicValue

//2.0新添加的方法

//dicValue.removeAll()

 

 

//5)遍历

for value in dicValue.values{

    print(value)

}

for key in dicValue.keys

{

    print(key)

}

for keyValue in dicValue{

    print(keyValue)

}

 

/*********运算符*************/

var a = 10

var aa = 20

a + aa

a - aa

a * aa

a / aa

 

//取余

var ? = 9 % 4

var ?? = (-9) % 4

var ??? = (-9) % 4

var ???? = (-9) % (-4)

 

//OC达不到的

var ????? = 9 % 2.5

var ?????? = 9.5 % 2

var ??????? = 9.5 % 2.5

 

//与(&& || 非(!

var = 3 > 6 && 3 < 2

var = 3 > 6 || 3 > 2

!

var aaa = 3 > 4 ? 3 : 4

//1.if else

if a > aa{

    

}else if a == aa{

    

}else{

    

}

//2.for循环

var sum = 0

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

    sum += i

}

sum

 

sum = 0

for j in 1..<100{

    sum += j

}

sum

 

sum = 0

while sum < 100{

    sum++

}

sum

 

sum = 0

//swift 2.0之前 repeat关键字依旧为do

repeat {

    sum++

}while sum < 100

sum

 

//4.Switch case 不用写break case可以写两个条件

var score = "A"

switch score {

    case "A":

    print("优秀")

    fallthrough//贯穿,强行执行到下一个case

    case "B":

    print("良好")

    

default:

    print("不及格")

    

}

 

var one = 16

switch one {

case 13...20 where one == 16:

    print("符合条件")

    fallthrough//贯穿,强行执行到下一个case

case 15...20:

    print("不完全符合条件")

default:

    print("不符合条件")

}

 

var point = (1,0)

switch point{

case (_,0):

    print("x轴上")

case (0,_):

    print("y轴上")

default:

    print("不在频道上")

}

 

 

/*************函数****************/

//1.无参无返

func sayHello(){

    print("嗨,菇凉")

}

 

sayHello()

 

//2.有参无返

//Swift2.0之后,默认第二个参数 内部参数外部参数相同

//Swift2.0之前,若想内部参数外部参数保持一致,需要在内部参数前加"#"

func getName(name : String,age : Int){

    print("\(name)今年\(age)岁了")

}

getName("何老师", age: 18)

 

//Swift2.0之后,若想第一个参数的内部参数有外部参数,需要在内部参数前,给其起个别名

func getName2(personName name : String, presonNameAge age : Int){

    print("\(name)今年\(age)岁了")

}

getName2(personName: "李四", presonNameAge: 5)

 

//默认参数

//默认参数,函数定义时,需要在内部参数前加"_"+空格,并且在参数类型后赋值

//调用时,可以不给默认参数传值,不传值,则用声明时的初始值,传值,则使用所传值

func getName3(name : String,_ name1:String = "屌丝"){

    print(name + "❤️\(name1)")

}

 

getName3("王军岐")

getName3("吴帅", "王军岐")

 

 

 

//3.有参有返

func getName1(name : String) ->String{

    return name;

}

 

//多返回值,实质返回一个元组

func getName4(name : String, age : Int, sex : String) ->(name1 :String, age1 : Int, sex1 : String)

{

    return (name,age,sex)

}

var person = getName4("李涵", age: 18, sex: "boy")

 

//4.无参有返

func getName5() ->String{

    return "这是一个无参有返的函数"

}

var getName = getName5()

 

//inout

var count = 20

func changeCount(inout number : Int){

    number = 40

}

count

changeCount(&count)

count

 

//不确定参数个数

func sumNum(numbers:Int...)->Int{

    var sum = 0

    for i in numbers{

        sum += i

    }

    return sum

}

var sumValue = sumNum(1,2,3,4,5,6,7,8,9)

 

 

/*******************结构体  ******************/

//1)结构体

struct Student{

    var name : String?

    var age : Int?

    //构造器

    init(name : String,age : Int){

        self.name = name

        self.age = age

    }

}

 

var student = Student(name: "张志超", age: 18)

student.name

student.age

 

student.name! + "为什么每天这么困"

 

//

 

class Person {

    //定义属性

    var name :String?

    var age : Int?

    var sex : String?

    

    //实例方法

    func description()->String{

        return "这是一个实例方法"

    }

    //类方法

    class func description()->String{

        return "这是一个类方法"

    }

    

    //构造器

    init(name : String,age : Int,sex : String){

        self.name = name

        self.age = age

        self.sex = sex

    }

    deinit{

        //移除通知

        //代理置空

    }

}

var 大黄 = Person.init(name: "小伟", age: 58, sex: "未知")

var 大哥 = Person(name: "小可爱", age: 48, sex: "未知")

 

//调用实例方法

大黄.description()

//调用类方法

Person.description()

 

//继承

 

class Teacher: Person {

    override func description() -> String {

        return "重写父类方法"

    }

}

 

var teacher = Teacher(name: "涛哥", age: 30, sex: "")

teacher.name

teacher.age

teacher.description()

 

//代理

 

protocol MyDelegate{

    

    func sayHello()->String

}

 

class cat: MyDelegate {

    func sayHello() -> String {

        return ",海拉"

    }

}

//签协议

class Student1: Person,MyDelegate {

    func sayHello() -> String {

        return ",海拉"

    }

}

 

//闭包,匿名函数 相当于OC中的block

 

//(参数列表)->返回值类型 in 代码段

var block = {(str :String ,str1 :String) -> String

    in

    return str + str1

}

 

var result = block("Love","You")

 

result

转载于:https://www.cnblogs.com/lh1204/p/5114086.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值