美文网首页swift语法学习iOS开发SwiftBlog
Swift学习笔记(结合代码,实践Tips)---Day1

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

作者: 王大先森 | 来源:发表于2015-06-26 00:27 被阅读317次

    //================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

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