zoukankan      html  css  js  c++  java
  • swift学习笔记3-4

    再牛逼的梦想,也抵不住你傻逼似的坚持!

    我跑啊跑啊,为的就是赶上那个被寄予厚望的自己。

    三、运算符+表达式

    swift允许重载运算符,比如 “+”你可以重载它

    后续会详细介绍

    赋值运算符 pass

    算数运算符  大部分 pass,只说特殊的

    19/4 结果是4 而不是5   //截断取整

    借助ANSI C标准库中的<math.h> 中的数学函数 完成复杂数学运算

    import Foundation

    var b = pow(3.2,5)  //3.2的5次方

    var c = sqrt(3.2) //平方根

    0~10的随机数    var d = arc4random() %10

    var e = sin(1.57)  //1.57当成弧度

    - 求负

    溢出运算符 ,对溢出数据位进行截断,程序更加健壮

    &+ ,&-,&*,&/,&%

    有符号整数,最高位是符号位,0代表正数,1代表负数。

    计算机 以补码的形式保存整数,正数的补码和源码相同,负数的补码 = 反码+1     (按位取反,最高位不变)

    位移运算符

    左移N位相当于乘以2的N次方,右移则是除以2的N次方。

    范围运算符
    a...b  包括 a,b边界。for in会用到

    var range = 2...6

    for num in range

    {

    pringtln(num*5)

    }

    a..<b  遍历数组的时候用(你懂的,因为从0开始嘛)

    let books = ["oc","swift","java","go"]

    for index in 0..<books.count

    {

    println(books[index])

    }

    比较运算符:=== 判断引用类型的变量,引用同一个对象时返回ture了

    逻辑运算符

    两个的 会短路:就是前边表达式判断完,后边就不判断了,没有执行的机会,直接得出结果

    && 与  有false则false

    & 与 但是 不会短路

    三目运算符

    var c =5 ,d = 5

    c>d ?println("c大于d"):(c<d?println("c小于d"):println("c等于d"))

    nil 合并运算符: ?? 

    a??b 判断a是否为nil,不为nil,返回a值,为nil,则返回默认b值,要求类型必须一致!

    例  let defaultName = "renhairui"

    var name:String?= "engineer"

    println(name ?? defaultName)   // 输出 engineer

    var nameNil :String?

    println(nameNil ?? defaultName)  // 输出 renhairui

    其实  a ?? b 相当于  a !=nil ?a!:b

    四、流程控制

    分支结构

    循环结构

    if else 要先处理范围小的情况

    var age = 45

    if age >60

    {

    println("老年人")
    }

    else if age>40{

    println("中年人")

    }else if age>20{
    println("青年人")

    }

    switch  不会继续执行下一个case

    var score = "c"

    switch score

    {
    case "a","A":

    println("优秀")

    fallthrough  贯穿

    default:

    break 直接忽略

    }

    var score = 87

    switch score{

    case 91...100:

    println("优秀")

    case 同理

    }

    var somePoint = (x:1,y:-4)

    switch somPoint

    {

    case (0,0):

    println("原点")

    case(_,0):

    println("X轴")

    case(0,_):

    println("Y轴")

    case(0...Int.max,0...Int.max):

    println("第一象限")

    }

    case 值绑定

    var score= 178

    switch score

    {

    case 91...100:

    println("youxiu")

    case 0..<60:

    println("")

    case let grade:

    println("输入的成绩(grade)不合法")

    }

    var somePoint = (x:2,y:0)

    switch somePoint

    {

    case (0,0):

    println()

    case(var x,0):

    println("位于X轴上,x值为(x)")

    case(0,var y):

    println("位于Y轴上,y值为(y)")

    case(x,y):

    println("位置为:(x),(y)")

    }

    where给case增加额外的判断条件

    case var(x,y) where x>0 && y>0:

    println("(x),(y)位于第一象限")

    循环体:被重复执行的代码

    for 循环 可以同时指定多条初始化,也可以是一个包含逻辑运算符的表达式

    for var b= 0,s=0,p =0; b<10 && s<4 &&p<10;p++

    {

    }

    return 可以结束整个方法 函数

    break  完全结束一个循环,跳出循环体,无论在那种循环。

    continue 忽略本次循环的剩下语句

  • 相关阅读:
    [学]寻找mysql高并发解决方案(事务,行锁,事务隔离级别)
    [学]MYSQL中replace into的用法
    Dynamics CRM OData方式进行增删改查时报错的问题
    Get Form type using javascript in CRM 2011
    Dynamics CRM 同一实体多个Form显示不同的Ribbon按钮
    java中throw与throws
    Dynamics CRM 通过OData查询数据URI中包含中文的情况
    我是怎样阅读技术论文的
    Dynamics CRM2013/2015 禁止欢迎界面(Disable the Welcome Screen)
    社会化网络分析
  • 原文地址:https://www.cnblogs.com/heri/p/4471486.html
Copyright © 2011-2022 走看看