swift基础_1

作者: 钎探穗 | 来源:发表于2016-07-18 17:07 被阅读137次
  • 注意:在创建Swift工程时,工程名不能与swift重名,因为当创建swift工程时,Xcode会自动导入swift类库,一旦重名,Xcode将会找不到swift类库,导致工程出错

  • import Foundation//当需要导入类库时,使用import +类库名,不用再加"<>"或者""
  • import Cocoa //引入此框架,可以写入OC,C,C++语言
  • 在swift中,语句末尾可以不加";",但是当在同一行书写多条语句时,必须用";"隔开


  • Swift中变量和常量

  • 用let修饰常量:常量的值不可改变
  • 用var修饰变量:变量的值可以改变
  • 注意: 可使用汉字,字母,表情对常量变量进行命名,名称中不能含有数字符号,箭头,无效的Unicode,横线和制表符,且不能以数字开头,尽管数字可以包含在名称里,一旦完成声明,就不能再次声明相同名称的变量或常量.或者改变它的类型.变量和常量也不能互换.
//1.定义常量:
let 常量 = "hello"//常量的值不可以改变
let a = 1.333

let 😄 = 1
print(😄)

//2.定义变量
var 变量 = "oc"
变量 = "swift"//变量的值可以修改
print(变量)

var b = 2.22
print(b);

var 😢 = 555
print(😢)

//3.在swift中,如果开始没有给数据类型,swift会根据初始值自动判断数据类型
//常量,变量的数据类型
let c:Int = 8//整型
let d:Float = 1.2//单精度浮点型
let e:Double = 2.22//双精度浮点型
let f:String = "string"//字符串类型,是有序集合,可看成Character类型的集合
let g:Character = "a"//单个字符(使用双引号)
let flag:Bool = true//布尔类型,只有true和false两个值

// 数据类型的的转换:值永远不会被隐式转换为其他类型.如需转换,请写明
let h = String(d)

//可选类型:"?"表示可选类型
//赋初值:如果使用let修饰可选类型,赋初值
let second :String? = "d"
//不赋初值:如果使用var修饰可选类型,可不赋初值
var first:String? = "String"

Swift中的字符串

//1.定义字符串变量
var str1 = "hello 大家"
//2创建空变量字符串(下面两种均为空字符串,且等价)
var empty_str = ""
var empty_str2 = String( )

//通过字符串对象的isEmpty 方法判断是否为空
if(empty_str.isEmpty){
print("empty_str is empty")
}

//3字符串拼接
//创建字符串变量
var str2 = "http://'"
str2 += "www.baidu.com"
print(str2)

//4.获取字符串长度
let count_str = "hello"
//获取长度:".characters.count"单个字符的个数
let length = count_str.characters.count
print(length)

//5.字符串比较
let name1 = "jiajia"
let name2 = "gongjie"
if name1 == name2{
print("\(name1) equals \(name2)")//格式化输出
}else{
print("not equal")
}

//6.字符串的插值
let num = 3.0
let NewNum = "\(num) *2.5 = \(num * 2.5)"//插入了num值
print(NewNum)

Swift中的数组

  • swift数组中存储的数据类型都必须是同一数据类型,如果想存储不同数据类型,可以使用oc中的数组
  • 在swift中,使用let和var声明一个数组
  • 数组需要指定类型,如果没有指定,会根据数组的初值去推断数据类型
//定义数组
//1.未给定数据类型
let nameArray:Array = ["大白","二百","三百"]//根据初值自动判断数据类型
let nameArray1 = ["大白","二百","三百"]

//数组元素的访问
print(nameArray[0])
print("元素1 = ",nameArray[0])
print("元素3 = ",nameArray[2])
print("元素3 \(nameArray[2]) ")

//2.给定数据类型
var ageArray:Array<Int> = [1,2,3]
print(ageArray)

//给定类型的空数组
let array = Array<String>()//定义一个字符串类型的空数组
let int_array = [Int]()//定义一个整型的空数组

//3.向数组中添加元素
//方法一;
ageArray.append(4)
print(ageArray)

//方法二:使用运算符重载向数组中添加元素
ageArray += [5,6]
print(ageArray)

//4.向数组中某个位置插入元素
ageArray.insert(7, atIndex: 2)
print(ageArray)

//移除数组中第一个元素
ageArray.removeFirst()
print(ageArray)

//移除数组中最后一个元素
ageArray.removeLast()
print(ageArray);

//移除数组某个位置的元素
ageArray.removeAtIndex(3)
print(ageArray)

Swift中的字典

字典中所有的key和value的值必须是同一数据类型

//1.定义字典
let let_Dic :Dictionary = ["a":10]//不可变
print(let_Dic)
var var_Dic:Dictionary<String,Int> = ["b":12]//可变
print(var_Dic)

//定义一个空字典
var let_empty_Dic:Dictionary<String,Int> = [:]//如果初始值,没有提供足够的信息(或者没有初始值),那么需要在变量后面声明类型,用冒号分割
var var_empty_Dic:Dictionary<String,Int>
//2.向字典中添加一对键值
let_empty_Dic["c"] = 20
print(let_empty_Dic)

var var_Empty_Dic:Dictionary<String,Int> = [:]
var_Empty_Dic["d"] = 15
print(var_Empty_Dic)

//3.修改字典中的一对键值
var_Empty_Dic["d"] = 2
print(var_Empty_Dic);

//4.通过key去删除键值
var_Empty_Dic.removeValueForKey("d")
print(var_Empty_Dic)

Swift中的元组

  • 元组:是一个数组类型,是一个可以返回多个值的数据格式
  • 在swift中,声明元组的时候,用"()"
  • 元组可通过下标访问元组元素,也可通过key的值去访问,类似C语言的结构体,可以放对中数据形象
//1.定义一个元组
//方法一:直接初始化一个元组
let status = ("语言",["iOS","HTML5","Unity"])
//方法二:直接写出数据类型
let NewStatus:(String,Array) = ("语言",["iOS","HTML5","Unity"])

//2.取出元组中值的方法
//方法一:直接赋值给常量,并通过使用标记名来获取对应的值
let statu:(classRoom:String, couse:Array) = status
var classInfo = statu.classRoom + statu.couse[0] + statu.couse[1]
print(classInfo)


//方法二:通过下标获取元素的值
var classInfo1 = statu.0
print(classInfo1)

var classInfo2 = statu.0 + statu.1[0]
print(classInfo2)

Swift中的循环

swift中的循环结构包括:for,for_in,while,repeat-while

//for循环
for  var i = 0; i < 10; i++ {
print("it's my life")
}

//for-in循环
for number in 1..<10 {
//"..<"开区间,表示1-9
    print(number)
}
for number in 1...10 {
//"..."闭区间,表示1-10
    print(number)
}

//while循环
var j = 5
while j > 0{
j--
    print(j)
}

//repeat-while循环:先执行一次循环体,再判断条件(循环体至少被执行一次)
repeat{
print("repeat...while")
}while 1 < 0

//循环遍历数组
var animalsArray = ["dog","cat","pig","tiger"]
for a in animalsArray{
print(a)
}

//循环遍历字典
var animalsDic = ["dog":"🐶","pig":"🐷"]
for (key,value) in animalsDic{
    print("key = \(key) , value = \(value)")
}

Swift中分支结构####

swift中分支结构:if,if-else,switch...case
switch要求每个分支必须包含代码

//if,if-else
let flag1 = true
if flag1 == true{//if...else...可以省略小括号
print("flagf = \(flag1)")
}else{
print("为假")
}

//switch...case(默认自带break)

let temp = 20
//特点一:switch中想要实现贯穿,使用关键字fallthrough,
switch temp{
case 0:
    print("0")
    fallthrough
case 10:
    print("10")
default:
    print("other")
}
//特点二:case后边可以是定义一个变量,where后面是被定义变量需要满足的条件
switch temp{
case var i where temp >= 0 && temp < 10:
    i = 20
    print(i)
default:
    print("other")
}

//特点三:case后面可以是一个范围
switch temp{
case 0..<10:
     print("范围在0-9,不包括10")
case 10...100:
    print("范围在10-100,包括100")
default:
    print("other")
}

//特点四:switch...case可以匹配一个元组
let point = (10,10)
switch point{
case (10,0):
    print("case1")
case(0,10):
    print("case2")
case(10,10):
    print("case3")
default:
    print("other")
}

Swift中的枚举

C语言中,枚举类型的枚举值和一个整形数值相对应,而swift中的枚举类型更加了灵活,不必给每一个枚举成员提供一个确定的枚举值,如果给枚举成员提供一个值(称为"原始值"),则该值的类型可以是字符串,字符,或者一个整型值或浮点数

//定义一个枚举值.枚举类型为原始类型(String)
enum animal:String{
case cat = "🐱"
    case dog = "🐶"
    case duck = "鸭子"
}
print(animal.cat.rawValue)//rawValue打印原始值
print(animal.cat.hashValue)//hashValue打印哈希值

//使用原始值创建一个变量
var dir = animal(rawValue: "🐤")//表示取得是原始值为🐤的那个枚举成员名.而成员的类型为animal
print(dir)

Swift中的函数

  • swift中里面用"func"表示声明一个函数
  • swift的文件格式里面.没有类似于oc的.h文件,所以,需要定义一个私有函数,可在func前面加private修饰
  • 函数格式:
func 函数名(参数名:参数类型 , 参数名:参数类型 , .......) ->返回值类型{
实现内容
return 返回值
}
//1.定义无参无返回值函数
func sayHi() ->Void{
print("Hi")
}

sayHi()
//2.有参无返回值函数
func sayHello(bay:String)->Void{
print(bay)
}
sayHello("hell0")

//3.无参有返回值
func money()->String{
return "No money"
}

let str = money()
print(str)

//4.有参有返回值
func number(a:Int,b:Int)->Int{
return a + b
}
var add = number(6, b: 7)
print(add)

//5.有参数多返回值

func all(number:Int, number2:Int)->(Int, Int, Int, Int){
return (number + number2, number - number2, number * number2, number / number2)
}
let result = all(5, number2: 2)
print(result)

//6.内参和外参
/*
swift中,一个参数有两个名字,内部参数名和外部参数名
内部参数名:在函数内部使用的参数名
外部参数名:在函数调用的时候,显示的参数名称
*/
func hero(first one:String, second tow:Int){
print(one, tow)//使用内参
}
hero(first: "跑", second: 1)//显示外参
/*
注意:
在默认情况下,函数第一个参数,不显示外部参数名,其余参数,显示外部参数名,并且和内部参数名一致
如果不想显示外部参数名,可以使用下划线省略,但是,函数的第一个参数不能使用"_"省略外部参数名
*/
func text(one:Int,_ two:Int){
print(one,two)
}
text(5, 0)
  • inout参数

函数参数,如果不给数据类型,默认为let,如果在参数前面加var,就可以修改参数,但是如果参数前面加的是"inout"来修饰,就成了输入输出函数,在函数内部修改参数,可影响到外部变量的值

var name = "豆豆"
func NewName(inout name:String){
name = "小花"//修改name值
    print("name修改为:",name)
}
NewName(&name)//传的是地址
print("修改后的值:",name)

//函数的嵌套
func outer(){
print("外部函数")
    func inside(){
    print("内部函数")
    }
    inside()//在外部函数中调用内部函数
}
outer()//在外部函数的外面,调用外部函数
```



####Swift中的空格
- swift中,不像C,C++,JAVA一样,完全忽视空格,swift对空格有一定要求,

- 在swift中,运算符不能直接跟在变量或常量后边

相关文章

  • 从 简单汇编基础 到 Swift 不简单的 a + 1

    从 简单汇编基础 到 Swift 不简单的 a + 1从 简单汇编基础 到 Swift 不简单的 a + 1

  • swift之对话框-简单封装

    备注:基础使用请参考swift之对话框-基础使用 1. 新建AlertHelper.swift 2. 调用 (1)...

  • Swift系统视频学习

    1、swift5.1基础语法:https://docs.swift.org/swift-book/Language...

  • Swift基础语法(二)

    swift基础语法(一)swift基础语法二主要讲数据类型 1.字符串 1.在swift中String是一个结构体...

  • Swift教程目录

    1.Swift基础知识

  • Swift-Core Data(1) 基础存储

    Swift-Core Data(1) 基础存储Swift-Core Data(2) 基础存储 最近有做个小 dem...

  • Swift 语言基础

    Swift 语言基础 Swift语言介绍 Swift基础部分 第一个Swift程序 Swift没有main函数,第...

  • Swift基础1

    1.var申明变量,let申明常量,一般不用指明常量是什么类型,系统会自动判定,如果系统不能根据你申明的值做出判断...

  • 1、Swift 基础

    声明常量与变量,分号可加可不加 类型注释 打印 注解 整数 Int 与 UInt 小数 类型推断 字面量 指数 类...

  • Swift基础_1

    Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或...

网友评论

    本文标题:swift基础_1

    本文链接:https://www.haomeiwen.com/subject/voopjttx.html