swift基本语法(一)

import UIKit

var str = "Hello, playground"

var num = 5
num += 5

class person {
var name = "zhangshanshan"
var address = "上海市浦东新区"
var age = 5


   func updateInfo(age : Int , address : String) {
    print(name,age,address)
}
}

let obj = person()
obj.updateInfo(age: 8, address: "河南郑州")

var abool = true
print(abool)

let num2 : Int = 5
if num < num2 {
print(num2)
}
else {
print(num)
}

switch num2 {
case 5:
print(1)
default:
print(num2)
}

var i = 11
repeat {
print(i)
i += 1
} while (i <= 15)

for i in 1...10 {
print(i)
}

for i in 1..<10 {
print(i)
}

var middleName: String? = ""

//不能对nil进行解包
var anotherName: String = middleName!

func printHello() {
print("hello world")
}

printHello()

func printNum(num:Int,age:Int,name:String) {
print("name:\(name),age:\(age),num:\(num)")
}

printNum(num: 5, age: 18, name: "nannan")

func maxNum(num1:Int,num2:Int) -> Int {
if num2 > num1 {
    return num2
}
else {
    return num1
}
}

maxNum(num1: 5, num2: 12)

guard的使用(重点)

—>判断一个人是否可以上网
—-> 1>任何用if的地方都能用guard,反之也成立.但是guard可以提高代码的可读性,比if好用
—-> 2>guard语句必须带else
—-> 3>guard的使用
—-> 3.1 如果条件表达式为真,则会执行后面的语句
—-> 3.2 如果条件表达式为假,则会执行else后面的{}语句
—-> 4 >补充(guard在国内翻译为:守卫)

let age = 20
//函数
func onLine(age : Int ,hasIdentity:Bool ,hasComputer : Bool){
//判断一
guard age > 18 else{
    print("年龄不够,不能上网")
    return
}
//判断二
guard hasIdentity else{
    print("无身份证,不能上网")
    return
}
//判断三
guard hasComputer else{
    print("没有电脑,不能上网")
    return
}
print("开机上网")
}

onLine(age: 20, hasIdentity: true, hasComputer: true)

switch-case

—-> 5.1 switch后面的()可以省略
—-> 5.2 case结束后可以不加break,系统会默认跟上break

let a = 9
switch a {
case 10:
    print("等于10")
case 11:
print("大于10")
case 9:
print("小于10")
default :
print("其它")
}

—-> 5.3 switch基本用法的补充 1> case后面跟多个条件 2>如果case中希望产生case穿透,可以使用fallthrough

//0 = 男; 1 = 女
let b = 1
switch b {
case 1:
print("女")
case 2:
print("男")
fallthrough;
default:
print("其它")
}

—-> 5.4 switch在swift中的使用—>case后面可以跟上多个条件

let e = 0
switch e {
case 0,1:
print("人");
default:
print("其它")
}

—-> 5.5 swift支持浮点型

let c = 1.2
switch c {
case 1.2,1.3:
print("人")
default:
print("其它")
}

—-> 5.6 swift支持字符串类型

let mystr = "测试字符串"
switch mystr {
case "测试":
print("测试就是两个字!")
case "字符串":
print("字符串能吃吗?")
case "位置":
print("不知道耶。。")
case "测试字符串":
print("终于对啦!")
default :
print("默认值")
}

—-> 5.7 swift支持区间类型(区间指的是:数字之间的区间)

let score = 80
switch score {
case 0 ..< 60:  //[0 60)
print("不及格")
case 60 ..< 80: //[60 80)
print("及格")
case 80 ..< 90: //[80 90)
print("良好")
case 90 ... 100://[90 100]
print("优秀")
default:
print("分数不合法")
}

循环-3种

1-swift中的循环写法(一)
注意: “..<”是一块的,中间不能隔开

for i in 0 ..< 10 {
print(i)
}

2-swift中的循环写法(二)
注意: “i++{“这样挨着写就会报错

for var i = 0; i < 10; i++ {
    print(i)
}

3.swift中的循环写法(三)
如果中间的i并没有起到作用,可以用下划线代替

for _ in 0 ..< 10{
print("hellow world")
}

while

var aa = 13
while(aa > 2) {
print("aa = \(aa)")
aa -= 2
}

swift中的while使用(二)
OC中的do改为repeat

var cc = 13
repeat {
print("cc = \(cc)")
cc -= 2
}while cc > 0

字符串

var myStr = "adsdsd12"
let length = myStr.characters.count
print("myStr长度是\(length)")
//遍历字符串中所有的字符
for d in myStr.characters {
print("myStr的字符\(d)")
}

字符串的拼接

1>两个字符串之间的拼接

let str01 = "xiaofeng"
let str02 = "肖锋"
let str03 = str01 + str02//直接采用加法
print(str03)

2.字符串和其它标识符之间的拼接

let name01 = "肖锋"
let age02 = 19
let height03 = 1.88
//拼接
let togetherInfo = "my name is \(name01),age is \(age02), height is \(height03)"
print(togetherInfo)

字符串的格式化

let totalSecond = 64
let min = totalSecond / 60
let second = totalSecond % 60
let timeString = String(format: "min: %02d second :%02d", arguments: [min, second])
print(timeString)

字符串的截取

1>将string类型转成NSString类型
2>swift的截取方式
字符串的截取—>需要先将String类型转为NSString类型(String as NSString)

var urString = "www.baidu.com"
let urlStr1 = (urString as NSString).substring(from: 2)
let urlStr2 = (urString as NSString).substring(to: 10)
//截取中间部分
let range = NSMakeRange(4, 5)
let middle = (urString as NSString).substring(with: range)

数组

1.1 定义不可变数组:使用let修饰

let array = ["adc"]
print("array:\(array)")

1.2 定义可变数组:使用var修饰

var array1 = ["adf"]
array1 = ["aefgg"]//合法的
print("array1:\(array1)")

对可变数组的基本操作(增删改查)

2.1 增

var array2 = ["xiaofeng"]
array2.append("nb")
array2.append("it")

2.2 删

var array3 = ["xaiofeng"]
array3.remove(at: 0)
print("array3:\(array3)")

2.3 改

var array4 = ["xiaofeng"]
array4.append("nb")
array4[1] = "it"
print("array4:\(array4)")

2.4 查

获取某个下标对应的元素

var array5 = ["xiaofeng"]
array5.append("it")
array5[0]
print(array5[1])

遍历数组(四种方式)

方式二和方式三比较常见

—-> 3.1 方法一

var array6 = ["xaiofeng"]
array6.append("it")
array6.append("nb")
for i in 0 ..< array6.count {
print(i)
print(array6[i])
}

—-> 3.2 方法二

var array7 = ["xaiofeng"]
array7.append("it")
array7.append("nb")
for name in array7 {
print(name)
}

—-> 3.3 方法三

var array8 = ["xaiofeng"]
array8.append("it")
array8.append("nb")
for (index, name) in array8.enumerated() {
print(index)
print(name)
}

—-> 3.4 方法四

var array9 = ["xaiofeng"]
array9.append("it")
array9.append("nb")
for name in array9[0 ..< 3] {
print(name)
}

数组的合并

(如果两个数组的类型一致,那么可以相加进行合并)

let name1 = ["xiaofeng","it"]
let name2 = ["nb"]
let name3 = [18,18.9]

let names = name1 + name2
//let names1 = name1 + name3//类型不一致,不能相加合并

字典

—-> 1.1 定义不可变字典:使用let修饰

let dict = [
"name":"xiaofeng",
"age":"18",
"height":180
] as [String : Any]
//dict = ["career":"it"] 不可变字典,不能修改

—-> 1.2 定义可变字典:使用var修饰

var dict1 = [String:AnyObject]()

对可变字典的基本操作(增删改查)

—-> 2.1 增

var dict2 = [String:AnyObject]()

添加元素

dict2["name"] = "xiaofeng" as AnyObject?
dict2.updateValue(18 as AnyObject, forKey: "age")

—-> 2.2 删

dict2.removeValue(forKey: "age")

—-> 2.3 改

dict2["name"] = "xiao" as AnyObject?
dict2.updateValue("xiaofeng" as AnyObject, forKey: "name")

—-> 2.4 查

dict2["name"]

遍历子字典(三种)

—-> 3.1 第一种

for key in dict2.keys {
print(key)
}

—-> 3.2 第二种
遍历字典中的左右的value

for value in dict2.values {
print(value)
}

—-> 3.3 第三种
遍历字典中所有的key/value

for (key,value) in dict2 {
print(key)
print(value)
}

合并字典

–>相同类型的字典也是不能相加合并的

let dict3 = [
"name":"xiaofeng",
"age":18,
"career":"it"
] as [String : Any]
var dict4 = ["height":1.99,"phoneNume":"119"] as [String : Any]
for (key,value) in dict3 {
dict4.updateValue(value, forKey: key)
}
print(dict4)

元组

1 例子:定义一组数据,用于描述个人信息-使用元组

let infoTuple = ("xiaofeng", 20, 1.90)
infoTuple.0
infoTuple.1
infoTuple.2

—-> 1.2 给元组起别名
给元组中每一个元素起别名

let infoTuple1 = (name : "xiaofeng", age : 20 , height : 1.90)
infoTuple1.name
infoTuple1.0
infoTuple1.age
infoTuple1.1
infoTuple1.height
infoTuple1.2

—-> 1.3 解释别名含义
别名就是元组对应标识符的名称

//let (name, age, height) = ("xiaofeng", 20, 1.90)
//name
//age
//height

可选类型(难点)

1 可选类型推出的目的:对nil值进行处理
2 定义可选类型
定义可选类型

var name : Optional<String> = nil

给可选类型赋一个具体的值

print(name)
name = "xiaofeng"
print(name)

从可选类型中取出具体的类型 强制解包: 可选类型 + !
强制解包: 可选类型 + !

print(name!)

可选类型的注意
如果可选类型中没有值,那么强制解包程序会崩溃
建议
在对可选类型进行解包之前,先判断可选类型是否等于nil

if name != nil {
print(name!)
}

可选绑定

—-> 6.1 判断name是否有值,如果没有值,直接不执行{}
—-> 6.2 如果name有值,那么系统会对name进行解包,并且将解包的结果赋值

if let tempName = name {
print(tempName)
}
if let name = name {
print(name)
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值