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!)
Swift基础知识_01
最新推荐文章于 2024-02-06 17:54:33 发布