Swift学习笔记(结合代码,实践Tips)---Day1

//================Demo1--Day1=================

/**

*1.常量变量

*/

varstr ="Hello, playground"

print(str)

varmyStr ="Hello,Word"

myStr="王云鹏,你好啊"

letyourStr ="你是常量啊"//常量不可以修改的

print(myStr)

/**

*2.类型推断

*/

varint1 =9

//int1 = 10.0这样的话会报错,因为之前已经判断int1是整型了

//赋值的时候直接给定类型变量后面声明类型,用冒号分割。

letint2:Int=9

//创建一个常量,显式指定类型为Float并指定初始值为4。

letpractiseNumber:Float=4

/**

*3.类型转换

*/

//值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换。

varlabel1 ="The width is"

varwidth=100

//var widthLabel1 = label1 + width这样会报错,因为两者类型不统一,可以转换下

//转换的方式和OC不一样。括号里面放的是被转换的变量,类型不加括号

varwidthLabel1 =label1+String(width)

//练习

varwidth2 =200

//width2 = 1.0现在是不支持float的转换下

varwidth3 =Float(width2)

//width3此时已经是float类型的了

letthree =3

letpointOneFourOneFiveNine =0.14159

letpi =three+Int(pointOneFourOneFiveNine)

//有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠

varnum1 =12.00

varnum2 =13.00

varnum3:Int=Int(num1+num2)//这样写也是可以的,嘿嘿,多多尝试

//练习:使用\()来把一个浮点计算转换成字符串,并加上某人的名字,和他打个招呼。

print("你好,\(num1+num2)")

/**

*4.使用方括号[]来创建数组和字典,并使用下标或者键(key)来访问元素。

*/

//数组

vararr1 = ["a","b","c","d"]

varnumStr =arr1[2]

print(arr1)

//字典

vardic1 = ["我的名字":"王云鹏",

"你的名字":"毛艳艳"]

varvalueMe =dic1["我的名字"]

varvalueYou =dic1["你的名字"]

varoccupations = [

"Malcolm":"Captain",

"Kaylee":"Mechanic",

]

occupations["Jayne"] ="Public Relations"//这也算是一个键值对的赋值,类似于一个插入新的key-value的作用但是好像顺序不是按照后来的在后面的顺序,最后这个怎么在了中间??难道那个语法是起插入作用么??

print(occupations)

//要创建一个空数组或者字典,使用初始化语法。

vararr2 = []//这不也是创建一个空数组么??为什么要使用初始化语法呢?答案在下面

vartemptyArr1 = [String]()//初始化一个空的字符串数组

vartemptyArr2 = [Int]()//初始化一个空的整型数组

//初始化字典

letemptyDictionary = [String:Float]()

//如果类型信息可以被推断出来,你可以用[]和[:]来创建空数组和空字典——就像你声明变量或者给函数传参数的时候一样。

vararr3NoItem = []

vardic1NoItem = [:]

/**

*5.控制流使用if和switch来进行条件操作,使用for-in、for、while和do-while来进行循环。包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。

*/

vararr3 = [12,13,14,15,16]

arr3.insert(17, atIndex:arr3.count)//插入一个

varteamScore =0

//快速枚举forIn遍历

forscoreinarr3{

ifscore >13{

teamScore+=3

}else{

}

}

print(teamScore)

//在if语句中,条件必须是一个布尔表达式——这意味着像if score { ... }这样的代码将报错,而不会隐形地与0做对比。你可以一起使用if和let来处理值缺失的情况。有些变量的值是可选的。一个可选的值可能是一个具体的值或者是nil,表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。

//可选的,等于说是双份,不赋值的时候它就是个nil注意?一定要紧跟着类型,中间不要留空格,否则会报错

varoptionString1 :String? ="Hello"

print(optionString1=nil)

varoptionString2 :String?//这时候它就是个nil

//练习

varoptionName :String? ="王云鹏"

vargreeting ="hello"

ifletname =optionName{//这时候name有值了,表示条件为真啊

greeting="hello,\(greeting)"

}

//练习把optionalName改成nil,greeting会是什么?添加一个else语句,当optionalName是nil时给greeting赋一个不同的值。

varoptionName1 :String?

vargreeting1 ="hello"

ifletname1 =optionName1{//无值。缺省为Nil

greeting="hello,\(greeting1)"

}else{

greeting="hello,\(greeting1)"

}

//switch貌似OC里面的switch只能比较各整型好像swift里面的switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。

letvegetable ="red papper"

switchvegetable{

case"red":

print("匹配错误")

case"paper":

print("照样匹配错误")

case"red papper":

print("匹配正确")//匹配到的是这个

default:

print("匹配的乱七八糟")

}

//Tips:运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break。

//你可以使用for-in来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。

varfunStrings = ["key1":["我的","毛的"],"key2":["它的","她的","他的"],"key3":["你的","那个人的"]]

//快速枚举

for(key,content)infunStrings{

ifkey =="key1"{//判断两个字符串是否相等。直接这样等号判断对么??

print(content)

}elseifcontent.count==3{

print(key)

}

}

//使用while来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾。

varn =0

varsum =0

whilen<100{

n+=1

sum+=n

}

print(sum)

//for循环你可以在循环中使用..<来表示范围,也可以使用传统的写法,两者是等价的:

varn1 =0

forvari=0;i<5;++i{

n1+= i

}

print(n1)

varn2 =0

forqin0..<5{

n2+= q

}

print(n2)

/**

*函数和闭包使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值。

*无论是形参还是返回值,都是返回的变量名后面是冒号+类型

*/

//声明函数

funcgreet(name:String,content:String) ->String{

return"Hello,\(name+content)"

}

//调用

varreturnValue:String=greet("王云鹏","给您请安了")

print(returnValue)

//使用元组来让一个函数返回多个值。该元组的元素可以用名称或数字来表示。

//[Int]这样表示传进去实参是个数组,只不过是个整型的,字符串型的自己琢磨

funccalculateStatistics(scores:[Int]) ->(min:Int,max:Int,sum:Int){

varmin = scores[0]

varmax = scores[0]

varsum =0

forscoreinscores {

ifscore > max {

max = score

}elseifscore < min {

min = score

}

sum += score

}

return(min, max, sum)

}

varitems =calculateStatistics([12,13,45,9,10])

print(items.sum)

print(items.2)

//函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式:

funcmaybeChange(values:Int...) ->Int{

varsum =0

forvalueinvalues{

sum += value

}

returnsum

}

maybeChange()

maybeChange(21,23,57)

//练习练习:写一个计算参数平均值的函数。

funcgetAverage(numbers:[Int]) ->Float{

varaverage =0

varsum =0

fornumberinnumbers{

sum += number

}

returnFloat(sum) /Float(numbers.count)

}

getAverage([1,2,3,4,5,6])

你可能感兴趣的:(Swift学习笔记(结合代码,实践Tips)---Day1)